Javascript 如果输入字段编号值等于0
我试图写入如果输入值=0 hide div.class else show div.class 这是我尝试过的,但只有一部分似乎有效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
$(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时工作