我想使用jQuery循环遍历多个(动态)单选按钮组,如果没有进行选择,则会引发错误并停止表单提交。
到目前为止,这是我的努力:
$("form").submit(function() {
$(":radio").each(function(){
if($(this).val().length == 0) {
alert('Not selected all radios');
return false;
}
});
});
但总是忽略if语句会停止提交,好像$(this)实际上不是单选按钮的值?
这是一个jsFiddle:http://jsfiddle.net/aVVW9/
非常感谢任何帮助,谢谢!
答案 0 :(得分:10)
试试这个。方法是遍历所有单选按钮,然后使用:checked
提取单选按钮组的名称,以查看是否检查了该组的任何成员。在找到第一个缺失检查后,一个简单的布尔值会停止错误。
$("form").submit(function() {
var submitme = true;
$(':radio').each(function() { // loop through each radio button
nam = $(this).attr('name'); // get the name of its set
if (submitme && !$(':radio[name="'+nam+'"]:checked').length) {
// see if any button in the set is checked
alert(nam+' group not checked');
submitme = false;
}
});
return submitme; // cancel the form submit
});
答案 1 :(得分:1)
$("form").submit(function() {
$(":radio", this).each(function(){
if(!this.checked) {
alert('Not selected all radios');
return false;
}
});
});
或
$("form").submit(function() {
if($(':radio:not(:checked)', this).length) {
alert('Not selected all radios');
return false;
}
});
选中 demo 。为简单起见,我将每个无线电组包装在一个具有类radio_group
的div中并循环遍历它们。
答案 2 :(得分:0)
我偶然发现了更优雅的解决方案!仅在您知道单选按钮的确切数量时才有用。
var x = 0;
$(":radio").change(function() {
x = x + 1;
if (x == count) {
//do smth
}
});