首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输入字段数值等于0

如果输入字段数值等于0
EN

Stack Overflow用户
提问于 2014-01-07 06:11:17
回答 3查看 3.7K关注 0票数 0

我正在尝试写入if input value =0隐藏div.class否则显示div.class

这就是我所尝试的,但似乎只有一部分是有效的。

代码语言:javascript
复制
$(document).ready(function() {
    if ($("input.product-quantity").val() == 0) {
        $(".name-number-field-container").hide();
    }
    else {
        $(".name-number-field-container").show();
    }
});

为了添加一个on change,我尝试了以下命令:

代码语言:javascript
复制
$(document).ready(function() {
    $('.product-quantity').change(function() {
    var $cont = $('.name-number-field-container');
      if($(this).val() === '0'){
           $cont.hide();
      } else {
           $cont.show();
      }
     });
});

但没那么走运

EN

回答 3

Stack Overflow用户

发布于 2014-01-07 06:18:12

.val()将返回一个字符串,因此消除隐式转换:

代码语言:javascript
复制
$(function(){
    var $cont = $('.name-number-field-container'),
        $qty = $('.product-quantity');

    function setCont(val){
        if(val === '0'){
            $cont.hide();
        } else {
            $cont.show();
        }
    }

    $qty.on('keyup',function(){    
        setCont(this.value);
    });

    setCont($qty.val());
});

不需要parseInt,只需要比较字符串即可。如果你真的担心有人输入'00000‘之类的东西,那么是的,使用parseInt

代码语言:javascript
复制
    $(function(){
    var $cont = $('.name-number-field-container'),
        $qty = $('.product-quantity');

    function setCont(val){
        if(parseInt(val,10) === 0){
            $cont.hide();
        } else {
            $cont.show();
        }
    }

    $qty.on('keyup',function(){    
        setCont(this.value);
    });

    setCont($qty.val());
});

但在这一点上,您正在不必要地转换值,因此除非绝对必要,否则我建议您不要这样做。

编辑的:显然没有人通知你需要将它绑定到事件。我选择keyup可以立即看到变化,但是当input不再具有焦点时,您也可以很容易地使用blur。我也把它换成了this.value,因为它比克拉普顿快。

Here is a jsFiddle to show the string compare workinghere is a jsFiddle to show the parseInt compare working

再次编辑:请详细解释您面临的问题是什么,除了“它仍然不能工作。我已经更新了我的答案,以显示如何在页面加载和按键调用。

或者..。疯狂的想法。您只需在CSS中设置它:

代码语言:javascript
复制
.name-number-field-container {
    display:none;
}

那么你就不需要在Javascript中做所有的事情了。无论哪种方式都行得通。

Here is the jsFiddle for the stringhere is the jsFiddle for the parseInthere is the jsFiddle for the CSS

票数 1
EN

Stack Overflow用户

发布于 2014-01-07 06:12:18

代码语言:javascript
复制
$(document).ready(function() {
    if (parseInt($("input.product-quantity").val(), 10) === 0) {
        $(".name-number-field-container").hide();
    }
    else {
        $(".name-number-field-container").show();
    }
});

应该行得通。您的代码无法工作,因为val()返回字符串,parseInt()返回字符串的整数部分。

如果你想通过字符串来检查,你可以这样做

代码语言:javascript
复制
$(document).ready(function() {
    if ($("input.product-quantity").val() === '0') {
        $(".name-number-field-container").hide();
    }
    else {
        $(".name-number-field-container").show();
    }
});
票数 0
EN

Stack Overflow用户

发布于 2014-01-07 06:19:53

在进行逻辑比较时尽量不要使用==,最好使用===。这样就消除了对parseInt的需求。因为要比较输入字段的值,所以该字段的数据类型将为string

代码语言:javascript
复制
$(document).ready(function() {
    var $input = $("input.product-quantity");
    var $field = $(".name-number-field-container");

    $field[($input.val() === "0" ? 'hide' : 'show')]();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20960254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档