启用和禁用所有子元素

时间:2013-11-18 18:28:57

标签: javascript jquery html

如果字段的其他部分具有特定值,则启用和禁用字段部分会出现此问题。 对于HTML代码,请考虑jsfiddle 条件

  1. 如果partA的所有字段都选为No,请启用partB
  2. 如果partB的所有字段都选为No,请启用partC
  3. 尝试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

1 个答案:

答案 0 :(得分:1)

jsBin demo

拥有此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

的2个以上的广播组也有效

您的错误:

"disable", "true"应为"disabled", "true"
<label>只能控制一个内部元素(因此我删除了它。)
<div> afaik不应该有name属性(所以我分配了ID