【问题标题】:How to Validate Multiple radio buttons如何验证多个单选按钮
【发布时间】:2019-08-15 19:42:05
【问题描述】:

如何验证多个单选按钮。所有这些单选按钮都是动态生成的。

<input type="radio"  name="answer_option1" value="1" id="ans_options1" />
<input type="radio"  name="answer_option1" value="2" id="ans_options2" />
<input type="radio"  name="answer_option1" value="3" id="ans_options3" />
<input type="radio"  name="answer_option1" value="4" id="ans_options4" />

<input type="radio"  name="answer_option2" value="5" id="ans_options5" />
<input type="radio"  name="answer_option2" value="6" id="ans_options6" />
<input type="radio"  name="answer_option2" value="7" id="ans_options7" />
<input type="radio"  name="answer_option2" value="8" id="ans_options8" />

<input type="radio"  name="answer_option3" value="9" id="ans_options9" />
<input type="radio"  name="answer_option3" value="10" id="ans_options10" />
<input type="radio"  name="answer_option3" value="11" id="ans_options11" />
<input type="radio"  name="answer_option3" value="12" id="ans_options12" />

<input type="radio"  name="answer_option4" value="13" id="ans_options13" />
<input type="radio"  name="answer_option4" value="14" id="ans_options14" />
<input type="radio"  name="answer_option4" value="15" id="ans_options15" />
<input type="radio"  name="answer_option4" value="16" id="ans_options16" />

【问题讨论】:

  • 表示您要检查单选按钮是否被选中?

标签: javascript jquery radio-button


【解决方案1】:

试试这个http://jsfiddle.net/aamir/r9qR2/

由于每个组具有不同的名称属性,因此您必须对每组单选按钮进行验证。

if($('input[name="answer_option1"]:checked').length === 0) {
     alert('Please select one option');
}

如果您有无限数量的组。试试这个http://jsfiddle.net/aamir/r9qR2/2/

    //Make groups
    var names = []
    $('input:radio').each(function () {
        var rname = $(this).attr('name');
        if ($.inArray(rname, names) === -1) names.push(rname);
    });

    //do validation for each group
    $.each(names, function (i, name) {
        if ($('input[name="' + name + '"]:checked').length === 0) {
            console.log('Please check ' + name);
        }
    });

如果您只想为所有组显示 1 个错误。试试这个http://jsfiddle.net/aamir/r9qR2/224/

【讨论】:

  • 有50多个组。
  • 嗯,让我试试别的吧:P
【解决方案2】:

试试这个新的小提琴http://jsfiddle.net/Hgpa9/3/

$(document).on("click","#validate", function() { 
var names = [];

    $('input[type="radio"]').each(function() {
        // Creates an array with the names of all the different checkbox group.
        names[$(this).attr('name')] = true;
    });

    // Goes through all the names and make sure there's at least one checked.
    for (name in names) {
        var radio_buttons = $("input[name='" + name + "']");
        if (radio_buttons.filter(':checked').length == 0) {
            alert('none checked in ' + name);
        } 
        else {
            // If you need to use the result you can do so without
            // another (costly) jQuery selector call:
            var val = radio_buttons.val();
        }
    }
});

【讨论】:

  • 您从第一组中选择了一个单选按钮。您没有从其他组中选择任何内容,此代码无效。
  • 试试这个新的小提琴。 jsfiddle.net/Hgpa9/3我已经更新了多个组的代码。
【解决方案3】:
var names = []
$('input[name^="answer_option"]').each(function() {
    var rname = $(this).attr('name');
    if ($.inArray(rname, names) == -1) names.push(rname);
});

$.each(names, function (i, name) {
    if ($('input[name="' + name + '"]:checked').length == 0) {
        console.log('Please check ' + name);
    }
});

【讨论】:

  • CSS3 不支持 IE8
猜你喜欢
  • 2018-11-23
  • 1970-01-01
  • 2012-11-11
  • 2017-11-18
  • 2013-02-10
  • 2023-04-06
  • 2012-10-10
  • 2013-06-16
相关资源
最近更新 更多