使用jQuery和Struts2检查条件下的复选框

时间:2014-06-05 14:26:01

标签: jquery html checkbox struts2 jquery-selectors

我的JSP中有以下代码:

<div class="fieldset_medium_right">
    <div class="checkSoc">
        <s:checkbox name="soc" cssClass="delete"  />            
    </div>
    <div class="checkEnt">
        <s:checkbox name="ent" cssClass="delete"  />            
    </div>
    <div class="CheckUnit">
        <s:checkbox name="ua" cssClass="delete" />          
    </div>
</div>

现在,当我检查&#34; soc&#34;然后&#34; ent&#34;和&#34; ua&#34;也被检查,并且不活动。 当我取消选中&#34; soc&#34;时,那么&#34; ent&#34;和&#34; ua&#34;也变得不受控制,并且活跃。

这是我的代码:

$("#soc").on('change', function() {
    var ent =   $('input[name=ent]');
    var ua = $('input[name=ua]');

    if ($(this).attr('checked')) {
        ent.attr('checked',true);
        ent.attr('disabled', true);
        ua.attr('checked',true);
        ua.attr('disabled', true);
      } else {
          ent.attr('disabled',false);
          ent.attr('checked',false); 
          ua.attr('disabled',false);
          ua.attr('checked',false); 
      }
}); 

哪个不起作用,但我无法弄清楚如何使它好起来(这里是Jquery的初学者)。

我试图从我改编的代码中激发灵感:

编辑:以下代码工作正常,它做我想要的。但是我不知道如何适应我自己的情况(即上面的代码)因为我没有类属性,所以我想使用id并且还有一些变量使它看起来更好。希望这更清楚。

<div class="elements">
 <div class="class3">
 <input class="class1" type="checkbox" value="1" name="first" id="first" />
 </div>
 <div class="class3">
 <input class="class2" type="checkbox" value="1" name="second" id="second" />
 </div>
  <div class="class3">
 <input class="class4" type="checkbox" value="1" name="third" id="third" />
 </div>
 </div>

$('input:checkbox.class1').live('change', function () {

  //if the 2nd checkbox is always class2:
  var two = $(this).parents('.elements').first().find('input:checkbox.class2');

  var three = $(this).parents('.elements').first().find('input:checkbox.class4');

  if ($(this).attr('checked')) {
    two.attr('checked',true);
      two.attr('disabled', true);
     three.attr('checked',true);
    three.attr('disabled', true);
  } else {
      two.attr('disabled',false);
     two.attr('checked',false); 
    three.attr('disabled',false);
     three.attr('checked',false); 
  }


});

但是使用Struts似乎没有<s:checkbox>的属性类,所以我不知道如何继续。有什么想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 您使用的是#id选择器,但该元素没有ID;
  2. 你错过了双引号,它是'selector[name="objName"]';
  3. attr('checked')不起作用,您可以在jQuery demo中看到;使用prop('checked')is('checked')
  4. 所有的东西都可以缩短

    $('input[name="soc"]').on('change', function () {
        $('input[name="ent"],input[name="ua"]')
            .prop('disabled',this.checked)
            .prop('checked' ,this.checked);
    });
    

    Running demo