jQuery-确保检查了所有无线电组

jQuery-确保检查了所有无线电组,jquery,radio,Jquery,Radio,我想使用jQuery遍历多个(动态)单选按钮组,如果其中任何一个没有选择,它会抛出一个错误并停止表单提交 以下是我迄今为止的努力: $("form").submit(function() { $(":radio").each(function(){ if($(this).val().length == 0) { alert('Not selected all radios'); return false; }

我想使用jQuery遍历多个(动态)单选按钮组,如果其中任何一个没有选择,它会抛出一个错误并停止表单提交

以下是我迄今为止的努力:

$("form").submit(function() {
    $(":radio").each(function(){
        if($(this).val().length == 0) {
            alert('Not selected all radios');
            return false;
        }
    }); 
});
但是它总是忽略将停止提交的if语句,好像$(this)实际上不是单选按钮的值

下面是一个JSFIDLE:

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

$("form").submit(function() {
    $(":radio", this).each(function(){
        if(!this.checked) {
            alert('Not selected all radios');
            return false;
        }
    }); 
});


选中此项。为了简单起见,我将每个无线电组包装在一个div中,该div具有class
radio\u group
,并在其上循环。

试试这个。方法是循环遍历所有单选按钮,然后提取单选按钮组的名称,使用
: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
});        ​

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

var x = 0;

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

if (x == count) {

//do smth

}

});

谢谢,但这总是返回false,我想知道这是否是因为组中有未选中的单选按钮?谢谢,但相同(我在!中添加了,并尝试了第二个代码:()它总是说“未选中所有收音机”对我来说,即使我选择了bothMany感谢,但同样的问题是,我认为我做错了什么:(@Nich why problem demo运行正常,您有什么问题?非常感谢,这非常棒,只在未检查任何内容时显示警报,但是否有方法通过删除名称和返回false来简化代码;警报下实际上不会停止表单提交:(当然,您可以将警报消息更改为任何您喜欢的内容。您可能还希望在无线组的标签中添加
error
类或其他内容,以突出显示需要检查的按钮:如果我希望用户在一个警报中看到所有错误,如何编辑?在第二次编辑中,错误纠正后,在何处编辑以更改将背景色设置回白色?
var x = 0;

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

if (x == count) {

//do smth

}

});