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>

最后修改:2019 年 12 月 14 日
一分也是爱