【问题标题】:jQuery - ensuring all radio groups are checkedjQuery - 确保检查所有无线电组
【发布时间】:2012-05-29 05:35:25
【问题描述】:

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

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

【问题讨论】:

    标签: jquery radio


    【解决方案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 中并循环遍历它们。

    【讨论】:

    • 谢谢,但是这个总是返回false,不知道是不是因为组内有单选按钮没有勾选?
    • 谢谢,但同样的(我在 ! 中添加了,也尝试了第二个代码:()
    • 它总是对我说“未选择所有收音机”,即使我已经为两者做出了选择
    • 非常感谢,同样的问题,认为我做错了什么:(
    • @Nich 为什么问题演示运行良好,你的问题是什么?
    【解决方案2】:

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

    【讨论】:

    • 非常感谢,这太棒了,仅在未检查任何内容时显示警报,但是有没有办法通过删除名称以某种方式简化代码,并且返回 false;在警报下实际上并没有停止表单提交:(
    • 当然,您可以将警报消息更改为您喜欢的任何内容。您可能还想将 error 类添加到单选组的标签或其他内容中,以突出显示需要检查的按钮:jsfiddle.net/mblase75/aVVW9/6
    • 如果我希望用户在一个警报中看到所有错误,如何编辑?使用第二次编辑,一旦错误正确,在哪里编辑以将 bgcolor 更改回白色?
    【解决方案3】:

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

    var x = 0;
    
    $(":radio").change(function() {
    x = x + 1;
    
    if (x == count) {
    
    //do smth
    
    }
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2012-11-14
      • 1970-01-01
      • 2018-01-27
      • 2012-05-29
      • 2021-09-23
      • 2013-08-16
      相关资源
      最近更新 更多