选中所有复选框并将所有选定项目存储在全局变量中

时间:2012-03-08 15:16:32

标签: php javascript post checkbox

我有一个电子邮件列表,旁边有一个复选框,用户可以选择他/她想要通过电子邮件发送的地址。现在我添加了另一个复选框,选中时将检查所有其他复选框。下面是我写的代码(当然有stackoverflow的帮助):

<SCRIPT LANGUAGE="JavaScript">

function selectFunction (checkall,field)
{
    if(checkall.checked==true){
        for (i = 0; i < field.length; i++)
            field[i].checked = true ;
    }else{
        for (i = 0; i < field.length; i++)
            field[i].checked = false ;
    }
}

</script>

<form name="myform" action="profile-invite.html" method="post">
    <b>Your Favorite Scripts & Languages</b><br>
    <input type="checkbox" name="list" value="1">aaa@xxx.com<br>
    <input type="checkbox" name="list" value="2">bbb@xxx.com<br>
    <input type="checkbox" name="list" value="3">ccc@xxx.com<br>
    <input type="checkbox" name="list" value="4">ddd@xxx.com<br>
    <input type="checkbox" name="list" value="5">eee@xxx.com<br>

    <input type="checkbox" name="selectallcb" value="Check All"
    onClick="selectFunction(document.myform.selectallcb,document.myform.list)">
    <input type="submit" name="formSubmit" value="Submit" />

</form>

“全选”功能正常,但是使用print_r我看到当单击提交按钮时,提交的值是我选择的最后一个复选框。例如,如果我点击5-3-1-2,$ _POST中的值为“2”而不是其余值。

我意识到我的代码只能注册一个选中的复选框,因此只考虑最后一个。所以我通过在复选框的名称后添加[]来重写代码:

<form name="myform" action="profile-invite.html" method="post">
    <b>Your Favorite Scripts & Languages</b><br>
    <input type="checkbox" name="list[]" value="1">aaa@xxx.com<br>
    <input type="checkbox" name="list[]" value="2">bbb@xxx.com<br>
    <input type="checkbox" name="list[]" value="3">ccc@xxx.com<br>
    <input type="checkbox" name="list[]" value="4">ddd@xxx.com<br>
    <input type="checkbox" name="list[]" value="5">eee@xxx.com<br>

    <input type="checkbox" name="selectallcb" value="Check All"
    onClick="selectFunction(document.myform.selectallcb,document.myform.list)">
    <input type="submit" name="formSubmit" value="Submit" />

</form>

现在,当我用print_r检查时,它会记录多个选项。(如果我点击5-3-1-2,$ _POST中的值现在为[0] =&gt; 5,[1] =&gt; 3 ,[2] =→1,[3] =&GT; 2)

但是“全选”复选框不再有效。我假设是由于[]将字段转换为数组。我尝试了各种方法(通过将“document.myform.list”替换为“document.myform.list []”等)。到目前为止没有工作,我将继续进行实验,但如果有人对如何合并以上2个代码请帮忙。

谢谢

1 个答案:

答案 0 :(得分:1)

改变这个:

onClick="selectFunction(document.myform.selectallcb,document.myform.list)"

到此:

onClick="selectFunction(document.myform.selectallcb,document.myform['list[]'])"

这是小提琴:http://jsfiddle.net/NxfH6/