Javascript 使用form.serialize获取正确的复选框值
我们目前正在使用Javascript 使用form.serialize获取正确的复选框值,javascript,jquery,serialization,Javascript,Jquery,Serialization,我们目前正在使用$('form').serialize()获取所有表单信息 这将返回任何复选框值为“开”或“关” 是否有任何方法可以使用相同的方法获得1/0或真/假值?是。您可以通过添加与复选框同名的隐藏输入来完成此操作,如果复选框未选中,将提交该值: <input type="hidden" name="option" value="false"/> <input type="checkbox" name="option" value="true"/> 如果选中复
$('form').serialize()
获取所有表单信息
这将返回任何复选框值为“开”或“关”
是否有任何方法可以使用相同的方法获得1/0或真/假值?是。您可以通过添加与复选框同名的隐藏输入来完成此操作,如果复选框未选中,将提交该值:
<input type="hidden" name="option" value="false"/>
<input type="checkbox" name="option" value="true"/>
如果选中复选框,它将提交这两个值。但是服务器端将读取最新的值(复选框的值)表单控件的值始终是字符串。可以使用单选按钮为同一控件名获取不同的值:
<form ...>
<input type="radio" name="whatever" value="true">true
<br>
<input type="radio" name="whatever" value="false">false
...
</form>
真的
假的
...
只能检查一个,并且只将检查的名称/值发送到服务器。
<input type="checkbox" name="check1" value="true" id="check1">
如果页面中有多个复选框,只需设置值,如:
<input id="reminder" name="Check1" value="false" type="checkbox" />
<input id="alarm" name="Check2" value="false" type="checkbox" />
默认情况下,复选框值不会出现在$('form').serializeArray()中,而是在选中时出现
我们必须为每个复选框保留一个隐藏字段,如:
<input type="hidden" value="false" name="Check1" />
<input type="hidden" value="false" name="Check2" />
现在,当我们现在序列化表单时,会得到正确的值,如:
Check1=true
Check2=false您可以为复选框添加新类,并在单击时设置值
<input class="checkbox" id="someId" type="checkbox" value="false" />Checkbox
然后,您将能够获取复选框的值或序列化表单。如果您有许多复选框,此方法可能会变得笨拙。这里有一个更好的方法:绝对不同意你的观点@KarthicRaghupathi。如果带有不透明逻辑的多行自定义JS看起来“更有用”,那就试试吧。最初的问题是关于二进制值,而不是多重值。对我来说,两行html代码是一个更优雅的解决方案。另一种方法也适用于二进制值。只有它处理表单中的所有复选框。我必须在一张表格中处理20个复选框。你的方法意味着40个输入标签,而不是几行JS。如果你在页面上有20个复选框,你就有另一个问题了,伙计-它的UX接近于0。想想看,像EMRs/EHR这样的应用程序有很多复选框的大表单。它可能并不一定意味着糟糕的用户体验。如果我们选中/取消选中复选框,并且需要更多的js才能工作,它就不会得到更新
<input class="checkbox" id="someId" type="checkbox" value="false" />Checkbox
$('.checkbox').click(function () {
$(this).val() == "false" ? $(this).val("true") : $(this).val("false");
});