如果字段的其他部分具有特定值,则启用和禁用字段部分会出现此问题。 对于HTML代码,请考虑jsfiddle 条件
partA
的所有字段都选为No
,请启用partB
。partB
的所有字段都选为No
,请启用partC
。 尝试1
首先,我尝试禁用PartB和PartC的无效元素。
$(function () {
$('.group').attr('name','partB').find('input').attr('disable', true);
$('.group').attr('name','partC').find('input').attr('disable', true);
});
我不确定如何确保No
div中的所有子元素都被选为group
。
答案 0 :(得分:1)
拥有此HTML:
<div class="group" id="partA">
<span> PART A</span><br/>
Option 1
<input type="radio" name="optionsRadios1" value="option1"/>Yes
<input type="radio" name="optionsRadios1" value="option2"/>No
<br />
Option 2
<input type="radio" name="optionsRadios2" value="option1"/>Yes
<input type="radio" name="optionsRadios2" value="option2"/>No
</div>
JQ:
$(function () {
$('#partB, #partC').find('input').prop('disabled', true);
function testChecked(){
var $par = $(this).closest('.group');
var $rad2 = $par.find('[value="option2"]');
var allNo = $rad2.filter(':checked').length == $rad2.length;
$par.next('.group').find(':radio').prop('disabled', !allNo);
if(!allNo){
$par.nextAll('.group').find(':radio').prop({'disabled':true, 'checked':false});
}
}
$('.group :radio').change(testChecked);
});
以上内容对每个.group
您的错误:
"disable", "true"
应为"disabled", "true"
<label>
只能控制一个内部元素(因此我删除了它。)
<div>
afaik不应该有name
属性(所以我分配了ID
)