我的表格如下:
<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']
数组中。
答案 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");
我希望对另一个人有用。