切换开关以传递未经检查的值

时间:2017-10-15 05:37:27

标签: html forms

我正在使用复选框创建切换开关,如此tutorial

所示

交换机的形式可以动态添加问题。在提交时,表单将每个答案的数组发布回要处理的页面,但是当关闭开关没有将值传递回表单时,答案与其他文本字段的答案不同步。有没有办法为off开关设置一个值,即如果未选中复选框?

我尝试使用以下方法将我的关闭复选框设置为关闭,但它似乎只是在表单提交时将所有开关设置为动画,任何人都有任何关于我做错的想法?​​

$('form').submit(function(e){
    var b = $("input:checkbox:not(:checked)");
    $(b).each(function () {
        $(this).val(0); //Set whatever value you need for 'not checked'
        $(this).attr("checked", true);
    });
    return true;
});

2 个答案:

答案 0 :(得分:1)

您可能希望使用Javascript为每个复选框设置一个值"切换"有两种方式之一:

选项1:在switch元素/复选框的html中,默认情况下将value属性设置为零。然后为切换添加一个javascript单击处理程序以检查其当前值并切换到相反的状态/值。

选项2:将Javascript添加到表单的提交处理程序(提交时),该处理程序检查任何没有值的开关元素,并在处理表单之前将它们设置为零。

无论哪种方式都应该始终传递一个值,并且您的表单应该能够跟踪所有输入状态。

答案 1 :(得分:0)

这个片段起了作用,因为Anson建议找到所有复选框并在表单提交时将它们设置为开启或关闭:

$('form').submit(function () {
    $(this).find('input[type="checkbox"]').each( function () {
        var checkbox = $(this);
        if( checkbox.is(':checked')) {
            checkbox.attr('value','1');
        } else {
            checkbox.after().append(checkbox.clone().attr({type:'hidden', value:0}));
            checkbox.prop('disabled', true);
        }
    })
});