2017-10-15 52 views
0

我使用复选框来创建一个拨动开关如本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; 
}); 

回答

1

您可能需要使用Javascript功能来设置两种方式各有一个复选框“开关”的值:

选项1:开关元件/复选框的HTML,将值设置属性默认为零。然后为切换添加一个JavaScript点击处理程序来检查其当前值并切换到相反的状态/值。

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

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

+0

太好了,我想我会尝试将所有的在表单提交时未检查为0的值。我试图用编辑中列出的JavaScript代码来做到这一点,但是当我提交表单时,这似乎将所有关闭的复选框设置为动画。不太清楚这里出了什么问题,你有什么想法吗? – user1419810

0

这个片段的伎俩,如安森建议此找到所有的复选框,将其设为打开或关闭表单提交:

$('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); 
     } 
    }) 
});