Javascript 值为0时,更改复选框-仅输入接受数字
我有一个复选框,单击时输入值为1。未选中时,该值为0。没关系 输入仅接受数字,验证正常。 我希望它的工作方式是,当值为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)) || (
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(+本次勾选);
});
使用函数而不是单击
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;