Javascript 值为0时,更改复选框-仅输入接受数字

Javascript 值为0时,更改复选框-仅输入接受数字,javascript,jquery,Javascript,Jquery,我有一个复选框,单击时输入值为1。未选中时,该值为0。没关系 输入仅接受数字,验证正常。 我希望它的工作方式是,当值为0时,复选框不被选中 当我使用一个数字或两个以上的值时,我的示例有时会失败 jQuery(document).on('keypress keyup blur', 'input.e-qty', function (event) { if ((((event.which > 47) && (event.which < 58)) || (

我有一个复选框,单击时输入值为1。未选中时,该值为0。没关系

输入仅接受数字,验证正常。 我希望它的工作方式是,当值为0时,复选框不被选中

当我使用一个数字或两个以上的值时,我的示例有时会失败

  jQuery(document).on('keypress keyup blur', 'input.e-qty', function (event) {
        if ((((event.which > 47) && (event.which < 58)) || (event.which == 13)) ) {
            var qty = jQuery(this).val();
            if(qty.length == 1 && qty == 0){
                jQuery('.product').trigger('click');
            }

            return true;
        }
        return false;        
    });


    jQuery(document).on("change", ".product", function () {
        var id = this.id.split("_").pop();
        var qty = jQuery('#qty_' + id);

        qty.val(+this.checked);

    });
jQuery(document).on('keypress-keyup-blur','input.e-qty',函数(事件){
如果(((event.which>47)和&(event.which<58))| |(event.which==13))){
var qty=jQuery(this.val();
如果(数量长度=1和数量=0){
jQuery('.product').trigger('click');
}
返回true;
}
返回false;
});
jQuery(document).on(“change”,.product”,函数(){
var id=this.id.split(“”).pop();
var qty=jQuery('#qty'+id);
数量val(+本次勾选);
});
使用函数而不是单击

  • Add else语句不等于0,并选中true
  • 对于数值问题,只需使用
    parseFloat
  • 已更新

    jQuery(document).on('keypress-keypup-keypdown-blur','input.e-qty',函数(事件){
    如果(((event.which>47)和&(event.which<58))| |(event.which==13)| |(event.which==8))){
    var qty=parseFloat(jQuery(this.val());
    如果(数量===0 | |!$.trim($(this.val())){
    jQuery('.product').prop('checked',false);
    }否则{
    jQuery('.product').prop('checked',true);
    }
    返回true;
    }
    返回false;
    });
    
    这是什么


    此外,您还可以使用
    attr
    属性,因为属性也可以在运行时更改,因此您的代码如下所示

    jQuery(document).on('keypress keyup blur', 'input.e-qty', function (event) {
            if ((((event.which > 47) && (event.which < 58)) || (event.which == 13)) ) {
                var qty = Number(jQuery(this).val());
    
                if(qty == 0){
    
                    $('.product').attr('checked', true);
    
                }else{
    
                    $('.product').attr('checked', false);
                }
    
                return true;
            }
            return false;        
        });
    

    您应该将
    keypress
    keyup
    分开,否则会得到一个双倍值

    我给你举了个例子

    jQuery(document).on('keypress','input.e-qty',函数(事件){
    如果(((event.which>47)和&(event.which<58))| |(event.which==13)))
    返回true;
    返回false;
    });
    jQuery(document).on('keyup','input.e-qty',函数(事件){
    变量数量=$(this.val();
    如果(数量!=“”){
    var i=帕塞因特(数量);
    jQuery('.product').prop(“选中”,i>0).trigger(“更改”)
    }
    });
    jQuery(document).on(“change”,.product”,函数(){
    var id=this.id.split(“”).pop();
    jQuery('#qty'+id).val(+this.checked).focus().select();
    });
    
    
    
    我建议您需要使用triple equals===更新您的条件,以获得精确匹配。然后试试你的功能。我认为这个解决方案很好!我建议将maxlength属性添加到您的输入字段中,以便只允许一个数字:)@Wimanicesir我只分析输入的值。现在它是一个数字。我认为它对您的两个工作都应该是可以的,但是,请尝试以下操作:1)按下复选框2)删除1)并写入06(例如3)删除数字6,仅具有值0,但复选框不是未选中的@Wimanicesir因为
    backspace
    键值未执行该条件。请尝试最新更新的fiddle@alexd2无法插入任何值@alen to这对我很有效,我插入1(选中)插入0(取消选中)参见此示例其他朋友
    jQuery(document).on('keypress keyup blur', 'input.e-qty', function(event) {
    
    var qty = jQuery(this).val();
    if (qty != 0) {
    
        jQuery('.product').prop('checked', true);
    } else {
        jQuery('.product').prop('checked', false);
    }
    
    });
    
    jQuery(document).on('keypress keyup blur', 'input.e-qty', function (event) {
            if ((((event.which > 47) && (event.which < 58)) || (event.which == 13)) ) {
                var qty = Number(jQuery(this).val());
    
                if(qty == 0){
    
                    $('.product').attr('checked', true);
    
                }else{
    
                    $('.product').attr('checked', false);
                }
    
                return true;
            }
            return false;        
        });
    
     $('.product')[0].checked = true;
     or
     $('.product')[0].checked = false;