3

我有一个使用 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

}
4

2 回答 2

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/

于 2012-01-30T18:14:52.073 回答
0

试试这个 focusout()

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

}

于 2012-01-24T02:20:04.620 回答