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

最初のチェックボックスの変更により、2 番目ではなく 3 番目ではなく 2 番目が選択されます。これは、コードで変更された場合、2 番目以外のチェックボックスの変更が発生しないためです。チェックボックスが定義されている場合は、コードを使用してチェックボックスの変更イベントを発生させる必要があります。

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 に答える