【问题标题】:Fire other checkboxes onclick() when main checkbox is selected/unselected选中/取消选中主复选框时触发其他复选框 onclick()
【发布时间】:2012-11-20 21:49:18
【问题描述】:

我已经阅读了许多关于选择所有复选框的其他问题,但找不到一个说明如何触发其他复选框操作的问题。

I have a main checkbox, when this checkbox is selected all other checkboxes are selected as well. 问题是,其他复选框必须执行自己的操作,例如,如果选中/取消选中,则禁用文本字段 .etc。我通过将 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" /> 

到目前为止,这工作正常,除了如果选中主复选框,则不会启用/禁用文本字段。尽管单个复选框能够做到这一点。

谢谢。

【问题讨论】:

    标签: javascript checkbox


    【解决方案1】:

    我看到两个问题:

    1. JavaScript 中没有 for each 运算符。你需要使用一个 这里是正常的 for 循环。
    2. 您不想设置checked 属性 对于复选框,因为如您所见,这将绕过所有事件 处理程序。相反,请在复选框上调用click(),它将是 选中(或未选中)并且将调用所有事件处理程序。

    toggleAllCheckBoxes 中最终会是这样的:

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

    这里有一个 Fiddle 可以试用此代码:http://jsfiddle.net/z4Ltc/

    【讨论】:

    • 谢谢,工作正常,不知道 .click()。无论如何,您的代码正在切换我的其他复选框,因此我添加了一个 if 来检查框状态是否与主框不同。如果您允许,我会在您的答案中添加一些代码,以使其适合作为此问题的答案。
    • 顺便说一句,我的每个循环都在工作,不知道如何,但工作在这里完成:D
    • 如果它符合您的需要,我认为没有问题。感谢接受。您的编辑被拒绝(不是我),因此您可能想将其添加为评论。
    • 主复选框基本上只会切换其他复选框,不会使它们相同。因此,所有这些都将变为选中或未选中。 if(checkboxes[i].checked != source.checked) { checkboxes[i].click(); }
    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多