【发布时间】:2021-12-01 03:00:24
【问题描述】:
我一直在为此寻找解决方案,发现最有效的方法是通过像这样的 hacky 解决方法,但没有一个发布了一种有效的方法来使用大量复选框数组。
我环顾四周,看到了一种脚本方式——让隐藏的输入成为 POST 源,并在提交时根据它们相邻的复选框更改值。但是 jquery 似乎不起作用——它总是提交一个 0 值(无论隐藏输入中的 value 属性是什么。
$(document).ready(function() {
$('#frm').submit(function() {
$('input[type="checkbox"]:checked').prev('.checkboxHandler').val(1);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<input type="hidden" class="checkboxHandler" name="isHeadOfFamily[]" value="0">
<td><input type="checkbox"></td>
<input type="hidden" class="checkboxHandler" name="isEmployed[]" value="0">
<td><input type="checkbox"></td>
<! and so on-->
【问题讨论】:
-
您的代码有效
-
不清楚您为什么将
0或1存储在隐藏的文本字段中。为什么不使用复选框的checked属性状态?它提供相同的true或false二进制响应。 -
我需要将 0 和 1 的值存储在 sql 中。不幸的是,未选中的框不会发布任何内容,并且尝试在 PHP 上设置它会导致数组错位
-
@inNeedOfHelp 您可以迭代它们中的每一个并构建您自己的表单数据。为此使用三级运算符:例如
isHeadOfHouse.push(($(el).prop("checked") ? 1 : 0));。请记住,如果您将二进制变量发送到 PHP 和 SQL,它会这样处理它。 -
@Twisty 它可以是像“true”这样的任何值,所以“1”同样有意义。无论如何,服务器都必须解析结果。为什么要讨论二进制值?
isHeadOfHouse是字段名,而不是客户端数组
标签: javascript html jquery checkbox