0

我在基于一个复选框按钮禁用/启用一组复选框时遇到问题。我正在使用带有 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>

当复选框按钮“任何地方”被选中时,所有其他复选框都被禁用。并且当它被取消选择时,所有其他复选框都被启用。

如何使用 jquery 实现这种行为?

4

2 回答 2

0

试试这个,虽然没有测试

$("#chkMain").click(function()
{
     $('input[type="checkbox"]').not(this).attr("disabled", this.checked);
});
于 2012-08-23T12:45:09.183 回答
0

像这样的东西:

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

也就是说,当chkMain单击 时,选中页面上除此之外的所有复选框,并将其禁用属性设置为与 的选中状态匹配chkMain

如果您在页面上有其他不属于此功能的复选框,您需要使选择器更加具体,例如,如果相关的复选框都在某个包含对象(例如该表)中:

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

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

$('input.someClass').prop("disabled", this.checked);
于 2012-08-23T12:43:03.023 回答