我正在使用复选框创建切换开关,如此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;
});
答案 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);
}
})
});