フォーム内に異なる名前のラジオ ボタンが多すぎるため、すべてのラジオ ボタン グループのみがチェックされている場合 (つまり、各ラジオ ボタン名がチェックされている場合) に送信ボタンを有効にしたいと考えています。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>
JQuery:
$().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 に答える