在PHP中重新提交表单后保留复选框状态

时间:2012-10-19 02:57:31

标签: php forms checkbox

CODE:

<input type="checkbox" name="discountedItem" <?php if (isset($_POST['discountedItem'])) echo "checked" . " " . "value='y'"; ?> />

如何将其转换为if语句,以便在检查时,值为n

我试过了:

<input type="checkbox" name="discountedItem" <?php if (isset($_POST['discountedItem'])) { echo "checked" . " " . "value='y'"; } else { echo "value='n'"; } ?> />

没用。该值只是NULL。

2 个答案:

答案 0 :(得分:1)

如果未设置复选框,则永远不会提交value=

您的n没有复选框。考虑一个单选按钮。或者简单地调整您的处理逻辑(您引用的if)不要查找字符串,而是任何现值。

答案 1 :(得分:0)

如果您检查该值,它将被发送到POST。如果你取消选中它就不会。

处理此问题的一种方法是包含一个隐藏元素,其名称与您的复选框具有占位符值(类似于-10),并且您的处理脚本(接收POST的那个)可以检查该值并执行必要的操作

<input type='hidden' name='discountedItem' value='-10' />
<input type='checkbox' name='discountedItem' ....>

但是可能有一些浏览器与此方法不兼容。我在过去看到IE会在POST中发布两个值,一个不会覆盖另一个(这是我们真正想要的)。

解决方法是只使用一段javascript并将其附加到复选框的onclick事件。如果未选中该复选框,则会将具有相同名称和占位符值的新隐藏元素添加到DOM中,如果选中该复选框,则会删除隐藏元素。

所以你的逻辑将成为:

<input type="checkbox" name="discountedItem" <?php if (isset($_POST['discountedItem']) && $_POST['discountedItem'] == '-10') { echo "checked='checked'" . " " . "value='y'"; } ?> />

HTH