将复选框设置为“已选中”会使GET变量无法发送

时间:2012-08-27 14:06:58

标签: php forms checkbox get

我正在尝试使复选框像radiobutton一样工作,开/关值传递给$ 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变量,值始终为OFF。为什么?这没有意义。将 checked =“checked”添加到复选框后,不会发送此复选框的GET变量。

1 个答案:

答案 0 :(得分: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>