如何检查一组单选按钮是否全部选中

How to check a set of radio buttons that all are selected?

本文关键字:是否 单选按钮 一组 全部 何检查 检查      更新时间:2024-03-05

我有一个动态生成的单选按钮列表。单选按钮的名称也是动态生成的。第一行单选按钮的名称为1,第二行单选按钮名称为2。每行有三个单选按钮,名称相同,但值不同。

如何使用jquery检查提交表单时每行中是否选择了一个单选按钮?

<tr>
                            <th>1</th>
                            <td> Please select one option </td>
                            <td class='selectable_cell'>
                            <input type="radio" name="2" value="1" />
                            </td>
                            <td class='selectable_cell'>
                            <input type="radio" name="2" value="2" />
                            </td>
                            <td class='selectable_cell'>
                            <input type="radio" name="2" value="3" />
                            </td>
                        </tr>
<tr>
                            <th>2</th>
                            <td> Please select another option </td>
                            <td class='selectable_cell'>
                            <input type="radio" name="3" value="1" />
                            </td>
                            <td class='selectable_cell'>
                            <input type="radio" name="3" value="2" />
                            </td>
                            <td class='selectable_cell'>
                            <input type="radio" name="3" value="3" />
                            </td>
                        </tr>

假设每一行单选按钮都被包装到一个特定的元素(例如<fieldset><tr>)中,您可以很容易地检查(在提交事件中)包装元素的数量是否等于所选单选按钮的数量,并使用

var group = $('#yourform tr');
if (group.length === group.find('input[type="radio"]:checked').length) {
   /* you choose one radio for each group */
}

我认为您可以向行添加类或id,比如#row1、#row2。之后它相当容易

//为您提供第一行选中的单选按钮数//$('input[type=radio]:已选中','#row1')//显示第二行选中的单选按钮的数目//$('input[type=radio]:已选中','#row2')if($('input[type=radio]:checked','#row1').length>0和$('input[type=adio]:checked','#row2')>0){//你的代码在这里}

试试这个

 var names = {};
  $(':radio').each(function() {
      names[$(this).attr('name')] = true;
  });
 var count = 0;
 $.each(names, function() { 
     count++;
  });
if ($(':radio:checked').length === count) {
    //All Checked
}

如下:

演示:http://jsfiddle.net/K2WsA/来自您更新的代码和微小的更改:http://jsfiddle.net/K2WsA/1/

行为:在演示中,在两个组中至少选择一个,你会收到警报。

希望它能有所帮助!

按名称分组:

  if($("input[type=radio][name=foo]:checked").length > 0 &&   
   $("input[type=radio][name=bar]:checked").length > 0)  
{      
/* do something */  
}  

在下面的演示链接上,我已经为上面的问题完成了完整的bin。所以请检查一下,它可能会对你有所帮助。

演示:http://codebins.com/bin/4ldqp9l

HTML:

<table id="table1" cellpadding="0" cellspacing="0" width="70%">
  <tr>
    <th>
      1
    </th>
    <td>
      Please select one option 
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd1" value="1" />
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd1" value="2" />
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd1" value="3" />
    </td>
  </tr>
  <tr>
    <th>
      2
    </th>
    <td>
      Please select another option 
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd2" value="1" />
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd2" value="2" />
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd2" value="3" />
    </td>
  </tr>
  <tr>
    <th>
      3
    </th>
    <td>
      Please select another option 
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd3" value="1" />
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd3" value="2" />
    </td>
    <td class='selectable_cell'>
      <input type="radio" name="rd3" value="3" />
    </td>
  </tr>
</table>
<br/>
<input type="button" id="btncheck" name="btncheck" value="Check Radio Selection" />
<div id="result">
</div>

CSS:

table#table1{
  border:1px solid #225599;
}
table#table1 th{
  border:1px solid #225599;
  padding:2px;
  background:#a48866;
}
table#table1 td{
  border:1px solid #225599;
  padding:2px;
  background:#94dbfd;
}
.error{
  color:#ca1619;
}
.success{
  color:#006633;
}

JQuery:

$(function() {
    $("#btncheck").click(function() {
        var result = "";
        $("table#table1").find("tr").each(function() {
            var row = $.trim($(this).find("th").text());
            if ($(this).find("input[type=radio]:checked").length > 0) {
                var opValue = $(this).find("input[type=radio]:checked").val();
                result += "<p class='success'>Row " + row + ": The option with value '"" + opValue + "'" has been selected... :)</p>";
            } else {
                result += "<p class='error'>Row " + row + ": No option has been selected..!</p>";
            }
            if (result != "") {
                $("div#result").html(result);
            }
        });
    });
});

演示:http://codebins.com/bin/4ldqp9l