在启用提交按钮之前,我需要确保已经回答了所有无线电组。如果我有:
var radioBtns = $('input').filter(':radio');
它告诉我有多少个单选按钮,但我需要知道是否有任何组尚未选择选项。
答案 0 :(得分:9)
如果你知道你有多少个小组,你可以这样做:
if($('input:radio:checked').length < numGroups){
// At least one group isn't checked
}
否则您需要先计算组数。我想不出有什么方法可以更好地做到这一点:
var rgroups = [];
$('input:radio').each(function(index, el){
var i;
for(i = 0; i < rgroups.length; i++)
if(rgroups[i] == $(el).attr('name'))
return true;
rgroups.push($(el).attr('name'));
}
);
rgroups = rgroups.length;
if($('input:radio:checked').length < rgroups)
alert('You must fill in all the fields.');
else
alert('Thanks!');
答案 1 :(得分:5)
这有效:
var all_answered = true;
$(':radio').each(function(){
if($(':radio[name='+$(this).attr('name')+']:checked').length == 0)
{
all_answered = false;
}
});
alert(all_answered);
答案 2 :(得分:2)
获取单选按钮组的计数:
var prevGroupName = "", currGroupName = "", groupCount = 0;
$("input[type='radio']").each(function () {
if (prevGroupName == "") {
groupCount++;
prevGroupName = this.name;
}
currGroupName = this.name;
if (prevGroupName != currGroupName) {
groupCount++;
prevGroupName = currGroupName;
}
});
获取已检查单选按钮的数量:
var radioChecked = $("input[type='radio']:checked").length;
答案 3 :(得分:1)
不是很整洁,但你仍然可以使用它
$("input:button").click(function(){
var v =$('input[name="a"]').filter(':checked');
var vr =$('input[name="b"]').filter(':checked');
if(v.length==0)
{
alert("select a group");
}else alert("very good");
if(vr.length==0)
{
alert(" o come on ");
}else alert("guud");
});
答案 4 :(得分:1)
根据此处的答案,here和here。检查类并允许选择来自同一组的多个项目。
function check_all_groups () {
var counter = 0
$('.btn-group').each(function () {
$(this).children('.atleastone').each(function () {
if ($(this).hasClass('active')) {
counter += 1
return false
}
});
});
if (counter == $('.btn-group').length) {
return true
}
};
答案 5 :(得分:1)
我在上面使用Set
的唯一性属性来解释JQuery中的元素名称列表时,我的理论*解决方案构建了Paulpro的答案:
var radioNames = new Set(Array.from($('input:radio').map(function() { return this.name } )));
var inputGroupCount = radioNames.length;
if( $('input:radio:checked').length < inputGroupCount){
// At least one group isn't checked
}
这使用map()
函数从无线电组中提取name
属性。然后是converted to an Array
,它被用作Set
的构造函数参数。
很遗憾 ,截至2016年4月,IE中不支持Set(iterable)
和Array.from()
; Opera和Safari的支持有限。
如果您可以确保您的用户使用Chrome或Firefox,或者这是后端代码,那么请继续!