0

私は次のようなフォームを持っています:-

<form name="frmChkForm" id="frmChkForm">
        <input type="checkbox" name="modules[1]" onclick="checkgroup(this)" value="1">Module 1<br>
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[1][1]">Unit 1
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[1][2]">Unit 2
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[1][3]">Unit 3<br>
        <input type="checkbox" name="modules[2]" onclick="checkgroup(this)" value="2">Module 2<br>
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[2][1]">Unit 4
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[2][2]">Unit 5
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[2][3]">Unit 6<br>
        <input type="checkbox" name="modules[3]" onclick="checkgroup(this)" value="3">Module 3<br>
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[3][1]">Unit 7
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[3][2]">Unit 8
        &nbsp;&nbsp;&nbsp;<input type="checkbox" name="units[3][3]">Unit 9
</form>

各モジュール(メインチェックボックス)の下にあるすべてのサブチェックボックスをオン/オフにします。

たとえば、「モジュール1」をチェックした場合は、ユニット1、2、3のみをチェックし、「モジュール1」のチェックを外すと、これらのユニットのチェックを外す必要があります。他のモジュールでも同じように動作するはずです。

これを実行するJavascript関数を探しています。

4

1 に答える 1

4

これを試して

function checkgroup(obj){            
            var element = [];
            var inputs = document.getElementsByTagName("input");

            for(var i = 0; i < inputs.length; i++)
            {
                if(inputs[i].name.indexOf('units[' + obj.value + ']') == 0)
                {
                element.push(inputs[i]);
                }
            }

            if(obj.checked){
                for(i=0;i<element.length;i++){
                    element[i].checked = true;
                }
            }else{
                for(i=0;i<element.length;i++){
                    element[i].checked = false;
                }
            }
        } 
于 2013-01-21T11:21:13.263 に答える