将复选框设置为';选中';使GET变量不被发送


Setting checkbox to 'checked' makes GET variable not being sent

我试图让复选框像单选按钮一样工作,打开/关闭值传递给$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变量不被发送。

如果未选中复选框,则不会提交值。因此,当您取消选中它时,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>