如何通过一次单击检查HTML页面上的所有复选框(复选框数组)

时间:2011-10-14 14:46:44

标签: javascript html

我有以下HTML:

<form name="smform" id="smform" method="post" action="">
      <input type="checkbox" name="Check_All" onClick="Check(document.smform.check)"  >

     <input type="checkbox" name="check" value="blue_color"> Blue<br>
     <input type="checkbox" name="check" value="green_color"> Green<br>
     <input type="checkbox" name="check" value="orange_color"> Orange<br>
</form>

使用这个JS:

function Check(chk)
    {
        if(document.smform.Check_All.checked){
        for (i = 0; i < chk.length; i++)
        chk[i].checked = true ;
        document.smform.Check_All.checked = true;
    }else{

        for (i = 0; i < chk.length; i++)
        chk[i].checked = false ;
        document.smform.Check_All.checked = false;
    }
}

这个工作正常,我可以选择或取消选中所有复选框,但是为了将其作为ARRAY发布,我的复选框将显示为name="check[]"

     <input type="checkbox" name="check[]" value="blue_color"> Blue<br>
     <input type="checkbox" name="check[]" value="green_color"> Green<br>
     <input type="checkbox" name="check[]" value="orange_color"> Orange<br>

但在这种情况下,我的JS无法正常工作。我如何调整这个JS,以便与name="check[]"一起使用?

感谢所有帮助。

3 个答案:

答案 0 :(得分:5)

不要使用点符号,而是使用方括号和字符串:

onClick="Check(document.smform['check[]'])"

实例:http://jsfiddle.net/5JCMS/

答案 1 :(得分:2)

您可以使用getElementsByTagName获取所有复选框

var inputs = document.getElementsByTagName("input");
Check(inputs);
    function Check(chk)
        {
            if(document.smform.Check_All.checked){
              for (i = 0; i < chk.length; i++){
                if(inputs[i].type == "checkbox"){
                    chk[i].checked = true ;
                }
               }
            document.smform.Check_All.checked = true;
        }else{

            for (i = 0; i < chk.length; i++){
               if(inputs[i].type == "checkbox"){
            chk[i].checked = false ;
             }
           }
            document.smform.Check_All.checked = false;
        }
    }

答案 2 :(得分:-3)

使用Jquery。您可以为要检查的所有复选框添加一个类

<input type='checkbox' class='autocheckable someOtherClass' />Blue

然后按照此处的说明进行操作:Setting "checked" for a checkbox with jQuery?