2012-08-23 191 views
0

我遇到問題,基於單個複選框按鈕禁用/啓用一組複選框。我使用JQuery使用struts 2。我有9個複選框:Struts 2/JQuery:在單個複選框上禁用並啓用複選框

<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實現這種行爲?

+0

在發佈代碼時,請花費少量的時間使其合理 - 爲什麼不只是縮小20個空間,使其看起來合理? –

回答

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); 
+0

我如何爲struts2中的每個複選框分配一個類?屬性'class'是未定義的。 – user1353307

+0

我相信你使用'cssClass =「someClass」'並且應該呈現爲'class =「someClass」'。 – nnnnnn

+0

@ user1353307 http://struts.apache.org/2.x/docs/checkbox.html –

0

試試這個,雖然沒有測試

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