0

我正在使用以下功能对切换复选框进行分组。

<script type=text/javascript>
function toggle(source, wild_name) {
  checkboxes = document.getElementsByName(wild_name);
  for(var i in checkboxes)
    checkboxes[i].checked = source.checked;
}
</script>

因此,当我单击定义为的复选框时:

<input type="checkbox" onchange="toggle(this, 'tweak_os')" name="toggle_tweak_os"> Toggle All

它检查任何名为“tweak_os”的复选框。但是我正在尝试这样做,以便如果一个复选框调用检查另一个复选框的函数,则应该执行相同的函数。在以下代码中:

<input type="checkbox" onchange="toggle(this, 'toggle_tweak_os')" name="toggler">
<input type="checkbox" onchange="toggle(this, 'tweak_os')" name="toggle_tweak_os">
<input type=checkbox id=tweak_os_1 name=tweak_os value=tweak_os_1>

我希望在单击名为“toggler”的第一个复选框时选中最后一个名为“tweak_os”的复选框。

4

2 回答 2

1

第一个复选框更改导致选择第二个而不是第三个,因为在使用代码更改时不会触发非第二个复选框的更改。如果已定义,您还需要使用代码触发复选框的更改事件。

function toggle(source, wild_name) {
    checkboxes = document.getElementsByName(wild_name);
    for (var i in checkboxes) {
        checkboxes[i].checked = source.checked;
        if (typeof checkboxes[i].onchange == "function") {
            checkboxes[i].onchange();
        }
    }
}​
于 2012-09-25T17:38:08.700 回答
1

onchange如果存在,请尝试触发复选框的功能,

if (checkboxes[i].onchange) checkboxes[i].onchange();

演示:http: //jsfiddle.net/wDBxb/

function toggle(source, wild_name) {
    checkboxes = document.getElementsByName(wild_name);
    for (var i in checkboxes) {
       checkboxes[i].checked = source.checked;
       if (checkboxes[i].onchange) checkboxes[i].onchange();
    }   
}
于 2012-09-25T17:39:36.107 回答