【问题标题】:Check all checkbox and store all selected items in a global variable选中所有复选框并将所有选定项目存储在全局变量中
【发布时间】:2012-03-08 23:26:32
【问题描述】:

我有一个电子邮件列表,旁边有一个复选框,用户可以选择他/她要发送电子邮件的地址。现在我添加了另一个复选框,选中时将选中所有其他复选框。下面是我写的代码(当然是在 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]=>5,[1]=>3,[ 2]=>1,[3]=>2.)

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

谢谢

【问题讨论】:

    标签: php javascript post checkbox


    【解决方案1】:

    改变这个:

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

    到这里:

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      相关资源
      最近更新 更多