我的表单中有太多具有不同名称的单选按钮,如果仅选中所有单选按钮组(换句话说,每个单选按钮名称已被选中),我想启用提交按钮。我怎样才能用 jQuery 做到这一点?
问问题
182 次
2 回答
1
首先你需要收集所有电台组name
的。然后您需要遍历所有无线电组并检查它们是否都被检查。例如:
$(function() {
$('input:radio').change(function(){
var names = [];
var allChecked = true;
$('input:radio').each(function(){
if(names.indexOf($(this).attr('name')) === -1) {
names.push($(this).attr('name'));
}
});
for(var i = 0, cnt = names.length; i < cnt; i++) {
if(!$('input[name="' + names[i] + '"]').is(':checked')) {
allChecked = false;
}
}
if(allChecked) {
$('#submit').removeAttr('disabled');
}
})
});
请参阅jsFiddle 上的演示。
于 2012-07-04T10:36:54.113 回答
1
HTML:
<form>
<input type="radio" name="a">
<input type="radio" name="a">
<input type="radio" name="a">
<input type="radio" name="a">|
<input type="radio" name="b">
<input type="radio" name="b">
<input type="radio" name="b">
<input type="radio" name="b">|
<input type="radio" name="c">
<input type="radio" name="c">
<input type="radio" name="c">
<input type="radio" name="c">
<input id="mysubmit" type="submit" value="Submit" disabled="disabled"/>
</form>
查询:
$().ready(function(){
$('form input:radio').change(function(){
var rButtons = $('form input:radio');
var rValues = $.map(rButtons, function(e, i) {
return $('input[name="'+ e.name +'"]').is(':checked');
}).toString().split(',');
// -1 for if no match
if($.inArray('false', rValues) == -1) {
$('#mysubmit').removeAttr('disabled');
}
});
});
更新了此答案以符合您的要求。 小提琴演示
于 2012-07-04T11:02:41.977 回答