判断所有单选按钮组是不是有一个复选框

Posted

技术标签:

【中文标题】判断所有单选按钮组是不是有一个复选框【英文标题】:Determine whether all radio button groups have one checked box判断所有单选按钮组是否有一个复选框 【发布时间】:2013-02-03 12:59:42 【问题描述】:

我正在做一个测验,每个问题都有一组单选按钮,如下所示:

<input type="radio" name="quid16" value="answid53" />Answer 1 : foo
<input type="radio" name="quid16" value="answid54" />Answer 2 : bar
<input type="radio" name="quid16" value="answid55" />Answer 3 : joe
<input type="radio" name="quid16" value="answid56" />Answer 4 : blogs

每个组都有一个id,比如上面的quid16;这个id是php生成的,不是固定的。

当我验证表单提交时,我需要检查所有组是否都有一个选中的单选按钮。

问题是我事先不知道组 ID。我该如何解决这个问题?

【问题讨论】:

你是在使用 jQuery Validate 插件还是从头开始做这个? 找到所有的单选按钮。遍历它们,使用单选按钮名称在最初为空的对象中创建一个属性。如果该按钮被选中,则将该属性的值设置为true,否则将其保留为空。完成后,对象中具有null 值的属性是未选中的单选按钮。 【参考方案1】:

你可以拿走所有单选框,以“quid”开头,然后:

    过滤唯一名称 过滤检查的值 比较 1. 与 2.

代码:

var radios = $('[name^=quid]'),
names = $.unique(radios.map(function() 
    return this.name;
)),
checked = radios.filter(function() 
    return this.checked;
);

if (names.length == checked.length) 
    alert('all answers are checked');

【讨论】:

@Pointy 实际上还有一些我以前没见过的 jQuery'ish :) 谢谢杰克。我不知道名称选择器的存在。你的解决方案帮了我很大的忙。 @Amelia 不客气。如果我的回答足够,请考虑通过单击此答案旁边的复选框来接受此答案。 杰克。是的,我想接受这个答案。您提到的复选框似乎不存在。也许是因为这个问题已经结束了? @Amelia,这个答案附近的数字 3 下方应该有一个复选标记。查看this about page了解更多详情。【参考方案2】:

使用Attribute Starts With Selector 获取前缀为“quid”的元素,使用jQuery.is 选择:checked 的元素。例如:

$('[name^=quid]').is(':checked'); //Returns true if any radio buttons are 'checked'

这是一个 JSFiddle 示例:http://jsfiddle.net/SDXSf/

<input type="radio" name="quid16" value="answid53" />Answer 1 : foo <br/>
<input type="radio" name="quid16" value="answid54" />Answer 2 : bar <br/>
<input type="radio" name="quid16" value="answid55" />Answer 3 : joe <br/>
<input type="radio" name="quid16" value="answid56" />Answer 4 : blogs <br/>
<br/>
<button>Test</button>
<script type="javascript">
    $(function()

    function isOneChecked(selector)
    
       return $(selector).is(':checked')
    

    $('button').click(function()
        alert(isOneChecked('[name^=quid]') ? 'Validated' : 'Please select a radio    button');
    );
);
</script>

【讨论】:

等一下...您想按quid 后面的数字分组吗?那么这是否意味着无线电组 #1 将是 quid01,无线电组 #2 将是 quid02,等等? 是的,这将是分组。然而 group#1 不一定必须是 quid01,它也可以是 quid15 quid169 等等。 我会接受 Jack 的回答。【参考方案3】:
if ($('input:radio').is(':checked')) function() else function()

【讨论】:

我认为这并不是问题的核心。 “但是由于这些测验可能从一页到下一页有所不同......”我认为页面上不能有超过 1 组收音机。

以上是关于判断所有单选按钮组是不是有一个复选框的主要内容,如果未能解决你的问题,请参考以下文章

java单选按钮传值

layui根据条件判断验证(单选按钮)

jQuery 验证,将错误消息放在复选框和单选按钮组下方

如何知道 Dart 中是不是选中了复选框或单选按钮?

winform dataGridView中如何添加单选按钮列?

Twitter Bootstrap 按钮组控制单选按钮/复选框