0

代码:

<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。

4

2 回答 2

1

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

你不能让你n的复选框。考虑一个单选按钮。或者只是调整您的处理逻辑(if您提到的)不寻找字符串,而是寻找任何现值。

于 2012-10-19T03:07:41.923 回答
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'"; } ?> />

高温高压

于 2012-10-19T03:53:44.460 回答