1

チェックボックスをラジオボタンのように機能させ、オン/オフ値を$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変数が送信されなくなります。

4

1 に答える 1

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>
于 2012-08-27T15:05:51.853 に答える