我的表格看起来像:
<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>
Run Code Online (Sandbox Code Playgroud)
复选框的数量会不时变化,因此在使用PHP处理此数据时,我必须循环_POST['checked']数组.
我的问题是,我想在选中复选框时以及不选中时执行操作.但只有选中的复选框才会添加到_POST['checked']数组中.
<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>
Run Code Online (Sandbox Code Playgroud)
这就是我正在做的
我使用两个输入,一个是没有名称的复选框,因此它不会发送到 php ,另一个是隐藏的,不会向用户显示,但它将发送到 php
然后使用jquery,当用户选中该框时,jquery 将隐藏输入的值更改为 true,当取消选中时,将值更改为 false
所以该值将始终发送到 php,其值为 true 或 falsestring
您可以通过将其更改为发送 1 和 0 而不是 true 和 false 之类的.is(':checked')?'true':'false')
内容来更改要发送到 php 的值
.is(':checked')?1:0)
另一种解决方案是rybo111解决方案
<input type="hidden" name="check" value="false">
<input type="checkbox" name="check" value="true">
Run Code Online (Sandbox Code Playgroud)
它将发送两个选项,但如果选中该复选框,它将覆盖第一个选项
但它不是 100% 可靠,它会向服务器发送更多数据
阅读有关具有相同名称属性的 POSTing Form Fields的更多信息
因此,如果您想使用没有 js 的简单解决方案,请使用“仅 html”,如果您想要 100% 可靠的解决方案,请使用“js”