jQuery验证,但仅在初次提交后

cho*_*ata 5 jquery jquery-validate

我正在使用非常好的低音验证插件来满足我所有的表单验证需求:http://bassistance.de/jquery-plugins/jquery-plugin-validation/

遇到的问题:即使用户尚未完成字段,也会立即显示错误消息.因此:在用户完成输入之前,将显示无效的电子邮件.

此处的文档中,一种解决方案是设置选项onkeyupfalse使错误消息仅显示在onblur上.

但是,在我的设置中,我遇到了两个额外的问题(上面的解决方案没有解决)

  1. 提交无效表单后,更正错误消息时不会清除错误消息
  2. 当使用浏览器自动填充功能时,自动填写的字段会被标记为错误.

所以,我最初的问题是:如何在第一次提交之后才进行Bassistance验证并且从那里开始使用它的默认设置?

这是我的代码:

if($('#contact_form').length) {
    $("#contact_form").validate({
        rules: {
            first_name: {
                required: true
            },
            last_name: {
                required: true
            },
            message: {
                required: true
            },
            telephone: {
                required: true
            },              
            email: {
                required: true,
                email: true
            },
            email_again: {
                required: true,
                email: true,
                equalTo: "#email"
            },
            norobot: {
                required:true,
                minlength:4,
                maxlength:4,
                number:true     
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

请在此处找到完整的JavaScript:http://lad.chocolata.be/js/main.js

这是一个工作示例,其中bug onkeyup设置为false:http: //lad.chocolata.be/nl/contact

提交带有一些无效字段的表单后,错误消息在更正时不会清除.

我错过了什么?

Spa*_*rky 4

引用 OP: “所以,简单明了,我的问题是:如何才能使 Bassistance 验证仅在第一次提交后才触发,并从那里开始使用默认设置?”

警告读者: 通常,人们会在 DOM 上调用.validate() 一次准备初始化表单。下面的代码仅在首次按下提交按钮时调用.validate() 一次...因此,在第一次按下该按钮之前不会进行任何验证

不需要.validate()多次调用,所以我使用了jQueryone()事件

$(document).ready(function() {

    $('#submit').one('click', function() {
        $('#myform').validate({
            // your rules & options
        });
    });

});
Run Code Online (Sandbox Code Playgroud)

工作演示:

http://jsfiddle.net/hSDyP/