Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果输入字段编号值等于0_Javascript_Jquery - Fatal编程技术网

Javascript 如果输入字段编号值等于0

Javascript 如果输入字段编号值等于0,javascript,jquery,Javascript,Jquery,我试图写入如果输入值=0 hide div.class else show div.class 这是我尝试过的,但只有一部分似乎有效 $(document).ready(function() { if ($("input.product-quantity").val() == 0) { $(".name-number-field-container").hide(); } else { $(".name-number-field-conta

我试图写入如果输入值=0 hide div.class else show div.class

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

$(document).ready(function() {
    if ($("input.product-quantity").val() == 0) {
        $(".name-number-field-container").hide();
    }
    else {
        $(".name-number-field-container").show();
    }
});
要添加更改,我尝试了以下方法:

$(document).ready(function() {
    $('.product-quantity').change(function() {
    var $cont = $('.name-number-field-container');
      if($(this).val() === '0'){
           $cont.hide();
      } else {
           $cont.show();
      }
     });
});
但是没有运气

$(document).ready(function() {
    if (parseInt($("input.product-quantity").val(), 10) === 0) {
        $(".name-number-field-container").hide();
    }
    else {
        $(".name-number-field-container").show();
    }
});
应该有用。您的代码无法工作,因为
val()
返回一个字符串,
parseInt()
返回字符串的整数部分。

如果要通过字符串进行检查,可以执行以下操作

$(document).ready(function() {
    if ($("input.product-quantity").val() === '0') {
        $(".name-number-field-container").hide();
    }
    else {
        $(".name-number-field-container").show();
    }
});
.val()
将返回一个字符串,因此消除隐式转换:

$(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

    $(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
立即查看更改,但是当
输入不再有焦点时,您也可以轻松地使用
blur
。我还将它切换到
this.value
,因为它比crapton快

,及

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

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

.name-number-field-container {
    display:none;
}
那么你就不需要用Javascript来完成所有的工作了,任何一种方法都可以


,和。

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

$(document).ready(function() {
    var $input = $("input.product-quantity");
    var $field = $(".name-number-field-container");

    $field[($input.val() === "0" ? 'hide' : 'show')]();
});

仅在页面加载时或输入值更改时运行?此操作仅运行一次。是否希望每次更改输入时都运行此操作?将
0
更改为
“0“
您应该真正使用
====
来快速修复如果字段在更改后返回到0,它应该再次隐藏,然后再次显示值是否大于0 JavaScript是基于事件的,当您编写类似于您所拥有的if语句时,它只发生一次。如果要重新评估,必须将其连接到某个事件,该事件将在您希望评估的时间点触发,在这种情况下,可以是更改事件或模糊事件。您应该使用
==
而不是
=
。在此之后,您可能会发现它需要是
==“0”
,并且您不需要
parseInt
在没有第二个参数的情况下永远不要使用
parseInt
。这可能会导致非常奇怪的结果:)。
parseInt($(“input.product quantity”).val(),10)
第二个参数的功能是什么?这不是所有平台上的默认值10吗?为什么/如何/何时会导致奇怪的结果?(只是好奇)当我将值更改为1时,.name number字段容器没有出现,我确实尝试过这个,但不幸的是它不起作用。它甚至没有隐藏.name-number字段容器。@anmaree你看过我的JSFIDLE吗?因为它在那里工作。我现在更新了两个jsfiddle:一个用于字符串比较,另一个用于
parseInt
比较。我确实看到了。好的,看看发生了什么。它可以工作,但您会看到我的值默认为0,因此在页面加载时,当我返回到0时,div仍然显示。它隐藏仅在我使用.on('change')…not keyup时工作