6

我想使用 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/

任何帮助将不胜感激,谢谢!

4

3 回答 3

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
});        ​

http://jsfiddle.net/mblase75/aVVW9/5/

于 2012-05-22T17:48:42.340 回答
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;
    }
});

检查这个演示。在这里为简单起见,我将每个无线电组包装在一个具有类的 div 中radio_group并循环它们。

于 2012-05-22T17:21:59.743 回答
0

我偶然发现了更优雅的解决方案!仅当您知道单选按钮的确切数量时才有用。

var x = 0;

$(":radio").change(function() {
x = x + 1;

if (x == count) {

//do smth

}

});
于 2013-08-10T09:24:50.020 回答