即使未选中,复选框也始终返回true

时间:2015-11-14 22:52:50

标签: php

<input name="inform_me" id="inform_me" type="checkbox"> inform me

每当我检查是否设置了此复选框时,我都会

  

BOOL(真)

即使没有真正选中复选框。

这就是我的PHP的样子:

var_dump(isset($_POST['inform_me']));

它出了什么问题?

3 个答案:

答案 0 :(得分:5)

PHP isset()函数将检查变量是否存在!

例如。

$a = false; // or any other value
echo isset($a); // True, because the variable $a exists!
echo isset($b); // False, because the variable $b doesn't exist!

无需将isset放在那里,请尝试以下方法:

echo $_POST['inform_me'];

$_POST['inform_me']变量将包含该值。 如果选中,则会包含复选框的的值。

例如,这是HTML代码

<input name="inform_me" id="inform_me" type="checkbox" value="test"> inform me </input>

如果选中,变量$ _POST ['inform_me']将为“test”,否则(如果未选中)该值将为空字符串。

如果您没有为HTML标记提供值,则如果选中该变量将为“on”,否则为空字符串(如果未选中)。

答案 1 :(得分:0)

据我所知,在我的简短经验中,复选框返回或关闭(因此当你接受它时它将始终返回true,因为它存在,但你并没有将返回条件设置为它具有的值),如前所述。即便如此,有一种方法我已经成功地习惯了这一点,在我的页面中,如果你想要RSS,我有一个输入复选框,如果想要RSS(模式开启),我存储1,如果想要RSS,则存储0。吨。像你这样的情况:

($_POST['inform_me'] == 'on') ? 1 : 0;

到目前为止,您可以将1和0更改为您想要返回的任何返回值,记住第一个(在这种情况下为1)将是条件为真时返回,第二个(例如0)条件是假的。

答案 2 :(得分:0)

我找到了解决方案。我的问题是我用Ajax传递了变量$_POST['inform_me']。在Ajax中,我使用data: { inform_me: $('#inform_me').val() }来获取复选框的值。而不是.val()我现在正在使用.is(':checked')并且它有效!