我在基于一个复选框按钮禁用/启用一组复选框时遇到问题。我正在使用带有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> </td>
</tr>
如果选中复选框“Anywhere”复选框,则禁用所有其他复选框。 当取消选中时,则启用所有其他复选框。
如何使用jquery实现此行为?
答案 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);
});