jQuery Validate resetForm()不会重置onFocus验证

Rya*_*yan 3 validation jquery jquery-validate onfocus

我有一个表单,使用jQuery Validate插件进行客户端验证,并通过AJAX提交.表单提交后,我希望它自行重置.我使用该.resetForm()方法重置字段,这是有效的,但问题是,验证插件仍然会立即尝试验证字段,当它们聚焦时,并在给新提交有机会输入其输入之前给出错误.

示例流程:

  • 最初触发验证
  • 修复验证,通过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

}
Run Code Online (Sandbox Code Playgroud)

Ryl*_*ley 5

您需要重置表单并运行Validation插件方法,resetForm如下所示:

var v = $("form").validate({
    submitHandler: function(form) {
            //resetForm is a method on the validation object, not the form
            v.resetForm(); 
            form.reset();
    }
});
Run Code Online (Sandbox Code Playgroud)

这似乎照顾了我在遵循您的工作流程时遇到的任何问题.见:http: //jsfiddle.net/nxXNz/27/

  • 如果你想在不调用validate函数的情况下这样做(例如,在关闭jQuery UI模式对话框时),你可以使用:`$('form').data('validator').resetForm();` (3认同)