获取选中和取消选中的复选框值

时间:2012-03-21 15:01:46

标签: php javascript mysql html

这是我的剧本:

HTML代码:

<script>
function pickIt(pId){
    if(document.getElementById(pId).checked==true){
        document.getElementById(pId).checked=false;
    }else{
        document.getElementById(pId).checked = true;
    }
    submitForm();
    return true;
}
</script>
<img src="images/bagua-square.gif" border="0" usemap="#Map2" />
<map name="Map2" id="Map2">
    <area shape="rect" coords="201,14,284,100" onclick="pickIt(1);" />
    <area shape="rect" coords="202,104,284,190" onclick="pickIt(2);" />
    <area shape="rect" coords="202,195,284,283" onclick="pickIt(3);" />
</map>
<div style="display:none;">
    <input type="checkbox" id="1" name="box[]" />
    <input type="checkbox" id="2" name="box[]" />
    <input type="checkbox" id="3" name="box[]" />
</div>

PHP代码:

<?php
    print_r($_POST['box']);
?>

当我点击框ID 1 pickIt()功能时,将复选框1转为 。 php显示数组(0 =&gt;'on')

但我也希望获得未经检查的复选框值,以便php显示  array(0 =&gt;'on',1 =&gt;'off',2 =&gt;'off')

实际上我希望所有复选框的状态为 关闭,因为我在mysql数据库中使用这些ID来更新记录状态 关闭。 请指导。

3 个答案:

答案 0 :(得分:4)

复选框如果被选中则发送它们的值,如果不是则不发送。

你应该:

<input type="checkbox" id="1" name="box[]" value="1" />
<input type="checkbox" id="2" name="box[]" value="2"  />
<input type="checkbox" id="3" name="box[]" value="3"  />

因此,值将为1,2和3,而不是on,on和on。然后你就可以知道哪些被检查了,因为它们不会都是一样的。

如果您真的希望数据结构为array(0=>'on', 1=>'off', 2=>'off'),那么您可以这样做:

$foo = array();
for ($i = 1; $i <= 3; $i++) {
    $foo[$i] = in_array($i, $_GET['box']) ? 'on' : 'off';
}

答案 1 :(得分:1)

只有在选中后才会向服务器发送复选框(提交表单时),否则不会提交

也改变了

onclick="pickIt('1');" /

答案 2 :(得分:0)

两个选项:

  1. 为每个复选框创建隐藏字段,并在您(取消)选中复选框时使用javascript将值设置为0或1。然后忽略$_POST
  2. 中的“开启”值
  3. Php必须知道有多少(以及哪些)复选框,因此缺少的$_POST值是未选中的复选框。你可以用for循环来做到这一点。