W3C最新规定,当checkbox未选中,post不会将值提交到服务器,这就出现了一个变量未初始化的问题,看网上有很多朋友增加隐藏表单的方式解决,如果有多个checkbox的话,会增加很大的代码量。
**我找到一个简单的解决办法:
1、通过jquery将value为1的自动设置为checked选中状态
2、提交时执行getCheckBoxVal函数,遍历所有checkbox,将已经选中的,将值设置为1
3、将未选中的选项value设置0,把checkbox选项设置为checked,保持选中状态,保证提交到服务器。**
此方法同样适用于radio组件。
<script>
$(document).ready(function() {
$("#configform").find("input:checkbox[value='1']").prop('checked',true);
})
function getCheckBoxVal(){ //提交前执行,将选中的checkbox的value设置为1,将未选中的checkbox也设置为checked,将值设置为0
$("#configform").find('input:checkbox').each(function() { //遍历所有复选框
if ($(this).prop('checked') == true) {
$(this).val('1');
}
else{
$(this).prop('checked',true);
$(this).val('0');
}
});
}
</script>