2012-11-20 48 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

如果它适合你所需要的,我没有看到一个问题。感谢接受。你的编辑被拒绝(不是我),所以你可能想添加它作为评论。 –

相关问题