取消选中时复选框返回false

时间:2015-06-28 10:37:42

标签: php html checkbox

我的表格如下:

<form>
    <input type"checkbox" name="checked[(unique_id)]">
    <input type"checkbox" name="checked[(unique_id)]">
    <input type"checkbox" name="checked[(unique_id)]">
    <input type"checkbox" name="checked[(unique_id)]">
</form>

复选框的数量会不时变化,因此在使用PHP处理此数据时,我必须循环_POST['checked']数组。

我的问题是,我想在选中复选框时以及不选中时执行操作。但只有选中的复选框才会添加到_POST['checked']数组中。

4 个答案:

答案 0 :(得分:3)

这是我以前见过的一种技术:

<input type="hidden" name="check" value="false">
<input type="checkbox" name="check" value="true">

这样做的原因是因为当多次发送具有相同名称的值时,只接受最后一个值。

在我看来,更好的方法是简单地使用isset($_POST['...'])in_array($_POST['...'])

答案 1 :(得分:2)

list

这就是我正在做的事情

我使用两个输入,一个是没有名字的复选框,所以它不会被发送到php ,另一个是隐藏的,不会被显示给用户,但它将被发送到php

然后使用jquery当用户选中框时jquery将隐藏输入的值更改为true,当取消选中时将其更改为false

所以值将始终发送到php,其值为true或false <form> <input type="checkbox" key="1"/> <input type="hidden" name="checked[1]" value="false"> <input type="checkbox" key="2"/> <input type="hidden" name="checked[2]" value="false"> <input type="checkbox" key="3"/> <input type="hidden" name="checked[3]" value="false"> <input type="checkbox" key="4"/> <input type="hidden" name="checked[4]" value="false"> </form> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(document).ready(function () { $('[key]').change(function () { var key = $(this).attr('key'); $($('[name="checked[' + key + ']"]')).val($(this).is(':checked') ? 'true' : 'false'); }); }); </script>

您可以通过更改此项来更改要发送给php的值 string 类似.is(':checked')?'true':'false')发送1和0而不是真和假

另一个解决方案是rybo111解决方案

.is(':checked')?1:0)

它将发送两个选项,但如果选中该复选框,它将覆盖第一个选项

但100%不可靠,它会向服务器发送更多数据

POSTing Form Fields with same Name Attribute

中详细了解相关内容

所以如果你想使用没有js的简单解决方案,只使用&#34; html&#34; 如果您想要100%可靠的解决方案,请使用&#34; js&#34;

答案 2 :(得分:0)

value="true"添加到每个复选框输入元素。 并将您的PHP代码更改为:

$checked_arr = [];
foreach($_POST["checked"] as $checked){
    if($checked == "true"){
        // do what you want to do 
    }
}

答案 3 :(得分:0)

另一个解决方案是服务器端解决方案,我认为这个解决方案太快而且容易。

客户方: 只需使用新的HTML:

<input type="checkbox" name="checked1" value="value_checked" ... />

服务器端:

制作如下全局函数:

function getVal(&$var, $default = '') {
    if (!isset($var) || empty($var) || is_null($var))
        $var = $default;
    return $var;
}

然后使用您想要阅读的某些您不知道设置的值。 像这样:

$checked_value = getVal($_POST["checked1"],false);

$checked_value = getVal($_POST["checked1"],"value_not_checked");

我希望对另一个人有用。