Struts 2 / JQuery:在单个复选框上禁用和启用复选框

时间:2012-08-23 12:37:48

标签: jquery checkbox struts2

我在基于一个复选框按钮禁用/启用一组复选框时遇到问题。我正在使用带有JQuery的struts 2。我有9个复选框:

<tr>
  <td><s:checkbox id="chkMain" name="Anywhere"/><s:property value="getPositionLabel('ANYWHERE')" /></td>
</tr>
<tr>
  <td><s:checkbox name="system"/><s:property value="getPositionLabel('SYSTEM')" /></td>             
  <td><s:checkbox name="author"/><s:property value="getPositionLabel('AUTHER')" /></td>
</tr>
<tr>
  <td><s:checkbox name="function"/><s:property value="getPositionLabel('FONCTION')" /></td>
  <td><s:checkbox name="reference"/><s:property value="getPositionLabel('REFERENCE')" /></td>
</tr>
<tr>
  <td><s:checkbox name="constructor"/><s:property value="getPositionLabel('CONSTRUCTOR')" /></td>                                                     
  <td><s:checkbox name="content"/><s:property value="getPositionLabel('CONTENT')" /></td>
</tr>
<tr>
  <td><s:checkbox name="materiel"/><s:property value="getPositionLabel('MATERIEL')" /></td>
  <td><s:checkbox name="title"/><s:property value="getPositionLabel('TITLE')" /></td> 
  <td>&nbsp;</td>
</tr>

如果选中复选框“Anywhere”复选框,则禁用所有其他复选框。 当取消选中时,则启用所有其他复选框。

如何使用jquery实现此行为?

2 个答案:

答案 0 :(得分:0)

这样的事情:

$("#chkMain").click(function() {
    $('input[type="checkbox"]').not(this).prop("disabled", this.checked);
});

也就是说,点击chkMain后,选择页面上的所有复选框(除外),并将其已禁用的属性设置为与chkMain的已检查状态相匹配。< / p>

如果页面上有其他复选框不应该是此功能的一部分,则需要使选择器更具体,例如,如果相关的选项卡都包含在某些对象中,例如该表:

$('#idOfTable input[type="checkbox"]').not(this).prop("disabled", this.checked);

或者你可以给他们一个共同的课程,在这种情况下你可以省略.not(this)部分:

$('input.someClass').prop("disabled", this.checked);

答案 1 :(得分:0)

试试这个,虽然未经过测试

$("#chkMain").click(function()
{
     $('input[type="checkbox"]').not(this).attr("disabled", this.checked);
});