【问题标题】:Setting checkbox to 'checked' makes GET variable not being sent [closed]将复选框设置为“已选中”会使 GET 变量不被发送 [关闭]
【发布时间】:2012-08-27 14:06:57
【问题描述】:

我正在尝试使复选框像单选按钮一样工作,并将开/关值传递给 $info。 此代码工作正常,变量 info 通过 GET 发送和读取

<?php if (empty($info)) { $info='on'; } ?>
<input type="checkbox" name="info" value="<?php if ($info=='on'){ echo "off"; } else {     echo "on"; } ?>" onchange="this.form.submit()"  />

添加这个:

**<?php if (!empty($info)){ echo 'checked="checked"'; } ?>** 

<input type="checkbox" name="info" value="<?php if ($info=='on'){ echo "off"; } else {   echo "on"; } ?>" <?php if (!empty($info)){ echo 'checked="checked"'; } ?> onchange="this.form.submit()"  />

破坏了一些东西 - GET 变量不被发送或读取,值总是关闭。为什么 ?这是没有意义的。在复选框中添加 checked="checked" 会使该复选框的 GET 变量不被发送。

【问题讨论】:

  • 你设置$info = $_GET['info'];了吗?你试过 var dumping _GET 吗? var_dump($_GET);
  • 为什么value 依赖于复选框是否被选中?无论如何,该值应该相同。
  • 我对你实际得到的结果有点迷茫......但是如果选中它,复选框只会提交一个值,所以动态设置它的值几乎没有意义,因为如果它之前是否检查过。

标签: php forms checkbox get


【解决方案1】:

如果未选中复选框,则不会提交该值。因此,当您取消选中它时,onchange 将触发但不会提交任何内容,因为未选中该框。这是一个解决方案:

<?php
$sub = $_POST['submitted'];
$info = $_POST['info'];
if ($sub) {
    if ($info == 'on') {
        echo 'turning it on!';
    } else {
        echo 'turning it OFF!';
    }
}
?>

<form method="post">
<input type="checkbox" name="info" value="on" onchange="this.form.submit()" <?php echo $info == 'on' ? 'checked="checked" ' : ''; ?> />
<input type="hidden" name="submitted" value="1" />
</form>

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2017-04-06
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多