我有一个表单,它使用jQuery Validate插件进行客户端验证,并通过AJAX提交。表单提交后,我希望它自行重置。我已经使用.resetForm()
方法来重置字段,这是有效的,但问题是,验证插件仍然会立即尝试验证字段,当它们聚焦时,并在给新提交的机会之前给出错误输入他们的输入。
示例流程:
通常情况下,插件会让您输入输入,然后才会告诉您输入错误。有没有办法真正重置表单,而不是再次关注焦点,而不是一起关闭焦点验证?
谢谢,这是一个清理/简化的代码示例!
// Validation
$('#registerForm').validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
success: function(response) {
if( response == 'success' ) {
resetMyForm();
}
else {
alert('unsuccessful');
}
}
})
}
});
})
function resetMyForm() {
$('#registerForm').resetForm();
v.prepareForm(); // Tried adding this, no help
v.hideErrors(); // Tried adding this, no help
}
答案 0 :(得分:5)
您需要重置表单并运行验证插件方法resetForm
,如下所示:
var v = $("form").validate({
submitHandler: function(form) {
//resetForm is a method on the validation object, not the form
v.resetForm();
form.reset();
}
});
这似乎可以解决我在遵循您的工作流程时遇到的任何问题。请参阅:http://jsfiddle.net/nxXNz/27/
答案 1 :(得分:0)
尝试此焦点()
function resetMyForm() {
$('#registerForm').resetForm();
v.prepareForm(); // Tried adding this, no help
v.hideErrors(); // Tried adding this, no help
$("ElementName").focusout(); // focus out which ever element you want
}