未勾选的复选框为何未被$("#frm").serializeJSON()纳入生成的JS对象?
问题解答
这是serializeJSON库的默认行为,它沿用了HTML表单原生序列化的规则——原生serialize()方法只会提交被勾选的复选框,这个库继承了这个逻辑,所以未勾选的复选框不会出现在生成的JS对象里。
解决办法有两种:
- 给复选框搭配一个同名的隐藏输入框,设置默认值(比如
false),把隐藏框放在复选框前面。这样复选框未勾选时,隐藏框的值会被纳入结果;勾选时,复选框的值会覆盖隐藏框的内容。示例代码:
<input type="hidden" name="terms" value="false"> <input type="checkbox" name="terms" value="true"> 同意条款
- 检查该库的配置选项,部分版本支持通过参数指定未勾选复选框的默认值,比如设置
checkboxUncheckedValue参数,调用示例:
$("#frm").serializeJSON({checkboxUncheckedValue: false});
内容的提问来源于stack exchange,提问作者pheromix
相关产品推荐
相关产品推荐

