2012-11-20 76 views
0

我已經閱讀了許多關於選擇所有複選框的其他問題,但是找不到說明如何觸發其他複選框操作的問題。當主複選框被選中/取消選中時,點擊其他複選框onclick()

我有一個主複選框,當選中此複選框時,所有其他複選框也被選中。 問題是,其他複選框必須執行自己的操作,例如禁用文本字段.etc,如果它們被選中/取消選中。我通過在每個複選框上添加onclick來實現這一點。那麼如果選中主複選框,如何調用每個複選框onclick(或使每個複選框執行其操作)?

唸叨這之後我做了以下內容:

 // main checkbox functin that checks/unchecks other checkboxes. 

    function toggleAllCheckBoxes(source , operationType) { 
       checkboxes = document.getElementsByName("checkBox" + operationType); 
       for each(var checkbox in checkboxes) 
       checkbox.checked = source.checked; 
       // checkbox.addEventListener('click', true); // this is wrong. 
      } 


    //this will toggle text fields enabled/disabled 
function toggleDisable(oldTable, newTable , checkBox) 
    { 
     if(document.getElementById(newTable) !=null)// in case to toggle only old table 
     { 
      document.getElementById(newTable).disabled = checkBox.checked; 
     } 

     document.getElementById(oldTable).disabled = checkBox.checked; 
    } 

主要複選框:

All<input type="checkbox" onClick="toggleAllCheckBoxes(this , '<?=$operationType?>')"/> 

其他複選框

X<input name="checkbox" id="checkbox" onclick="toggleDisable('<?= $originalTableId?>' , '<?= $backupTableId?>' , this)" type="checkbox" /> 

到目前爲止,工作正常,但,文本字段如果選中主複選框,則不啓用/禁用。雖然單個複選框可以做到這一點。

謝謝。

回答

1

我看到兩個問題:

  1. 沒有在JavaScript中沒有for each運營商。這裏你需要使用 normal。
  2. 你不想設置checked屬性 的複選框,因爲正如你所看到的,這將繞過所有事件 處理程序。相反,在複選框上調用click(),將會調用(或未選中) ,並調用所有事件處理程序。

這將結束在toggleAllCheckBoxes看起來像這樣:

for(var i = 0; i < checkboxes.length; i++) 
    checkboxes[i].click(); 

這裏有一個小提琴嘗試這個代碼:http://jsfiddle.net/z4Ltc/

+0

謝謝,這工作得很好,不知道回合。點擊( )。 總之,你的代碼是切換我的其他複選框,所以我添加了一個如果檢查框狀態是否比主框不同。 如果你允許我,我給你的答案添加了一些代碼,使它適合作爲這個問題的答案。 – MJoraid

+0

順便說一句,我的每個循環工作,不知道如何,但工作完成在這裏:D – MJoraid

+0

如果它適合你所需要的,我沒有看到一個問題。感謝接受。你的編輯被拒絕(不是我),所以你可能想添加它作爲評論。 –

相關問題