bassistance jQuery表单验证插件 - 提交前的电子邮件错误

时间:2013-01-28 09:10:02

标签: jquery jquery-validate

我正在使用这个插件: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

用于JQuery表单验证。除了电子邮件字段,一切都很好。一旦我开始在该字段中输入内容,请输入“请输入有效的电子邮件地址”。即使我到目前为止输入的内容是正确的,也会显示消息。

在文档(http://docs.jquery.com/Plugins/Validation)中,它说:

  

“在字段被标记为无效之前,验证是懒惰的:之前   用户可以第一次提交表单   字段没有令人讨厌的消息 - 他以前不会被窃听   他有机会真正输入正确的值“

但是电子邮件领域似乎没有发生这种情况。

这个问题也可以在作者的演示中看到: http://jquery.bassistance.de/validate/demo/

此行为是否有选项/解决方法?

2 个答案:

答案 0 :(得分:0)

此行为已在最新jquery-validate.js on github中修复。该错误被报告为

  

'当文字在字段'

时,电子邮件验证会立即触发

bug report and discussion here

答案 1 :(得分:0)

  

“在字段被标记为无效之前,验证是懒惰的:在第一次提交表单之前,用户可以通过标签浏览   字段没有令人讨厌的消息 - 他以前不会被窃听   他有机会实际输入正确的值“

     

但是电子邮件领域似乎没有发生这种情况。

这不仅仅是email规则。您可以在minlength规则上看到相同的行为。

http://jsfiddle.net/f3sxF/

  

此行为是否有选项/解决方法?

你可以使用预发布版本来解决这个问题。但是,您可以简单地使用onkeyup回调函数的修改版本,而不是通过在生产网站上使用插件的“预发布”版本来冒新的错误......

$('#myform').validate({
    onkeyup: function (element, event) {
        if (event.which === 9 && this.elementValue(element) === '') {
            return;
        } else if (element.name in this.submitted ) {
            this.element(element);
        }
    },
    // your other options
});

使用上述内容,所有onkeyup验证都会被忽略,直到第一次提交表单,或者直到用户选中包含输入数据的字段为止。

演示:http://jsfiddle.net/wNj4n/