2011-08-03 53 views
0

我有一个表单(用于编辑现有信息),其提交是通过jQuery的$ .post()在ajax中完成的。在提交之前,jQuery验证会启动以确保所更改的值是有效的,并在每个有效值旁边生成一个复选标记。jQuery验证:提交表单(ajax提交)后如何取消选中标记?

我的问题是,提交后复选标记不会消失。我尝试了验证器方法resetForm(),它取下了复选标记,但具有将所有更改的输入恢复为旧值的不良副作用。

有没有办法只删除复选标记?

有没有办法更新由resetForm()记忆的原始值?如果是这样,那么我可以使用resetForm()来达到我的目的,而不会产生不良的副作用。

请帮忙。谢谢你们。

澄清:当我说“复选标记”时,它与复选框不一样。事实上,我的问题与复选框无关。要查看我所指的复选标记,请转至here并在某个文本输入中输入一些有效的字符串。

+0

邮政编码。什么检查标记? – Andrew

回答

3

demo you linked to那些“对号”是结果掉CSS样式,“检查”之类的后加入到<label><td class="status">,当相关的输入被认为是有效的范围内。一个类被添加到标签,这给它一个复选标记背景。

无论如何,为了在表单提交时触发某些行为,请使用submitHandler。例如:

$('form').validate({ 
    // Your config here... 
    submitHandler: function() { 
     $('label').removeClass('checked'); 
    } 
}); 

这一切都在定制该演示,所以你必须做设置和选项是什么在起作用。

0

是的,就像输入文本字段有element.defaultValue,复选框有checkboxObject.defaultChecked这是一个布尔值,可以很容易地使用attr()函数与JQuery一起使用。该prop()功能建议,如“检查”,“已禁用”,“选择”等特性,但你

$('#mybox').prop('checked'); 

查看包装盒上你可能宁愿使用类似形式复位功能

$(':checkbox').each(function(){ 
    $(this).attr('checked',$(this).defaultChecked); 
}); 

http://www.w3schools.com/jsref/prop_checkbox_defaultchecked.asp

1

您可以通过jQuery的做到这一点。

$('input[type="checkbox"]:checked').removeAttr('checked') 

啊,我可能误解了你的问题。只需找到这些复选标记的课程,并将它们设置为display:nonevisibility:hidden即可。

+0

如果某些复选框应该默认选中,该怎么办? – AlienWebguy

+0

他提到删除所有复选标记,但我想我指的是错误的复选标记,而不是复选框上的复选标记。 – ace

+0

您可以添加其他属性,例如'默认'来标识默认选中的复选框。然后将它们从选择器中筛选出来 '$('input [type =“checkbox”]:checked:not([default])')。removeAttr('checked')' – ace

1

一个选项是在验证之后但在提交之前提交并重新填充之后获取表单值。

var backup = $('#form-id').serializeArray(); 
$('#form-id').resetForm(); 

// 
// submit logic 
// 

$.each(backup, function(key, value) { 
    $('[name="' + key + '"]').val(value); 
});