Javascript each()不更新
我试图检查是否选择了一组单选按钮。但是,如果在事件发生后选择了收音机,则它似乎不会更新 守则:Javascript each()不更新,javascript,jquery,Javascript,Jquery,我试图检查是否选择了一组单选按钮。但是,如果在事件发生后选择了收音机,则它似乎不会更新 守则: $('button#submit').click(function() { var addr_chkd = 0; $('input:radio[name="address"]').each(function() { if (!$(this).attr('checked')) addr_chkd++ }); }); if (addr_c
$('button#submit').click(function() {
var addr_chkd = 0;
$('input:radio[name="address"]').each(function() {
if (!$(this).attr('checked'))
addr_chkd++
});
});
if (addr_chkd)
// do something
当点击按钮而未选择任何内容时,代码运行良好。但是,当选择单选按钮并单击该按钮时,addr\u chkd
仍返回大于零的值
[更新]
问题是我正在检查addr\u chkd
是否大于零。我应该检查addr\u chkd
是否等于单选按钮的长度。我对@PPvG的答案做了一点修改,它成功了
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var num_unchecked = radios.filter(':not(:checked)').length;
if (num_unchecked === radios.length) {
alert('please select a button');
}
});
用$(this.attr()
代替这个。用$(this.attr()
代替这个。试试这个
$('button#submit').click(function() {
var addr_chkd = 0;
$('input:radio:[name="address"]').each(function() {
if (!$(this).is(':checked'))
addr_chkd++
});
});
或者,你可以简单地按照你的意愿去做
$('button#submit').click(function() {
var addr_chkd = $('input:radio[name="address"]:not(:checked)').length
}
因为一次只能选中一个单选按钮,所以您也可以按
$('button#submit').click(function() {
var addr_chkd = $('input:radio[name="address"]').length - 1;
}
以上所有内容的提琴示例:试试这个
$('button#submit').click(function() {
var addr_chkd = 0;
$('input:radio:[name="address"]').each(function() {
if (!$(this).is(':checked'))
addr_chkd++
});
});
或者,你可以简单地按照你的意愿去做
$('button#submit').click(function() {
var addr_chkd = $('input:radio[name="address"]:not(:checked)').length
}
因为一次只能选中一个单选按钮,所以您也可以按
$('button#submit').click(function() {
var addr_chkd = $('input:radio[name="address"]').length - 1;
}
以上所有内容的提琴示例:您可以使用一种非常简单的方法:
var addr_chkd = $('input:radio[name="address"]:checked').length;
或者,如果您的意思是不检查:
var addr_chkd = $('input:radio[name="address"]').not(':checked').length;
但是对于收音机输入,您可能会出错。您可以使用一种非常简单的方法:
var addr_chkd = $('input:radio[name="address"]:checked').length;
或者,如果您的意思是不检查:
var addr_chkd = $('input:radio[name="address"]').not(':checked').length;
但是对于无线电输入,您可能会出错。我不完全清楚您想做什么,但我可以用两种方式解释
addr\u chkd
如果“addr”代表“adder”,并且您想要计算未选中单选按钮的数量,请使用以下命令:
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var num_unchecked = radios.filter(':not(:checked)').length;
if (num_unchecked) {
// do something
}
});
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var checked = radios.filter(':not(:checked)').get(0);
if (checked.length > 0) {
var index_checked = radios.index(checked);
// do something
}
});
另一方面,如果“addr”表示“address”,并且您需要所选单选按钮的索引,请使用以下命令:
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var num_unchecked = radios.filter(':not(:checked)').length;
if (num_unchecked) {
// do something
}
});
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var checked = radios.filter(':not(:checked)').get(0);
if (checked.length > 0) {
var index_checked = radios.index(checked);
// do something
}
});
请注意,在这两种情况下,我都将
if
子句移动到click
处理程序中。在您的示例中,它在单击处理程序之外,这意味着它只会执行一次,甚至在按钮被单击之前执行一次。我不完全清楚您想做什么,但我可以用两种方式解释addr\u chkd
如果“addr”代表“adder”,并且您想要计算未选中单选按钮的数量,请使用以下命令:
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var num_unchecked = radios.filter(':not(:checked)').length;
if (num_unchecked) {
// do something
}
});
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var checked = radios.filter(':not(:checked)').get(0);
if (checked.length > 0) {
var index_checked = radios.index(checked);
// do something
}
});
另一方面,如果“addr”表示“address”,并且您需要所选单选按钮的索引,请使用以下命令:
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var num_unchecked = radios.filter(':not(:checked)').length;
if (num_unchecked) {
// do something
}
});
$('button#submit').click(function() {
var radios = $('input:radio[name="address"]');
var checked = radios.filter(':not(:checked)').get(0);
if (checked.length > 0) {
var index_checked = radios.index(checked);
// do something
}
});
请注意,在这两种情况下,我都将if
子句移动到click
处理程序中。在您的示例中,它位于单击
处理程序之外,这意味着它将只执行一次,甚至在单击按钮之前执行一次。为什么它不大于0?只有一个单选按钮将被选中是否正确?这意味着每个未选中的单选按钮的计数器都将增加。您希望代码执行什么操作?我希望确保至少选中一个单选按钮。我的逻辑可能有问题(这是不起作用的原因),但如果addr_chkd>0,则没有检查任何按钮。为什么它不大于0?只有一个单选按钮将被选中是否正确?这意味着每个未选中的单选按钮的计数器都将增加。您希望代码执行什么操作?我希望确保至少选中一个单选按钮。我的逻辑可能有问题(这是不起作用的原因),但如果addr_chkd>0,则没有检查任何按钮。我想计算未勾选单选按钮的数量。谢谢你指出if在click之外。我想数一数未勾选的单选按钮的数量。感谢您指出,if不在单击范围内。