前言
在使用layui时候,遇到个问题,我需要复选框选中传值传1,未选中的传0
<input type="checkbox" name="avatarUrl_header" lay-skin="primary" title="头像"> <input type="checkbox" name="nickName_header" lay-skin="primary" title="微信昵称">
如果你直接简单的这样拿,你会发现你只能拿到选中的参数
解决
方法一:
绑定事件,选中时赋值选中值给hidden input框
<input type="checkbox" name="avatarUrl_header" value="1" /> <input type="checkbox" name="avatarUrl_header" value="1" onclick="javascript:document.getElementById(‘test‘).value=this.checked;" /> <input type="hidden" id="test" name="test" value="false"/>
方法二:
根据W3C的规则未选中的checkbox和禁用的控件不是有效控件,不会被提交。但是可以在它之前定义一个同name名的hidden表单(注意先后顺序)。这种做法很巧妙。
比如:
<input type="hidden" name="foo" value="0"> <input type="checkbox" name="foo" id="foo" value="1">
当checkbox未选中的时候,提交的是hidden表单,值0就被提交到服务器了。
当checkbox选中的时候,hidden和checkbox表单都被提交了,但是因为它们的name是一样的,所以hidden的值被checkbox覆盖了。所以就得到了数值1。
在PHP中,如果有多个name相同的表单,post到服务器,后台仅取最后一个表单的值。
而在ASP.NET中,会把这个多个表单的值合并成逗号分割的值。因此,这种方法用在PHP下更合适。
From: https://blog.csdn.net/qq_36303853/article/details/113537109
----------
checkbox不选中传值,checkbox设置默认值
html checkbox元素 只能设置一个value 当我们没有选中的时候取不到其默认值
于是在checkbox元素上面增加一个隐藏域,当我们checkbox选中时就会改变其默认值,不选则不改变。
<input type="checkbox" name="status" value="1">
例:
<input type="hidden" name="status" value="0"> <input type="checkbox" name="status" value="1">
记得 name 要保持相同。
From: https://blog.csdn.net/qq6759/article/details/89355094