Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证器没有在所有更新上进行验证(或者它是正则表达式)_Jquery_Regex_Validation - Fatal编程技术网

jQuery验证器没有在所有更新上进行验证(或者它是正则表达式)

jQuery验证器没有在所有更新上进行验证(或者它是正则表达式),jquery,regex,validation,Jquery,Regex,Validation,我正在使用jQuery验证程序验证文本字段中是否输入了正确的电子邮件地址。但是,似乎有时不会触发此验证器 情景: 用户在其电子邮件中输入“user.email.provider.com”。当他们打字时,验证器总是告诉他们电子邮件的格式不正确。它们突出显示“email”和“provider”之间的时间段,并将其更改为“@”。而电子邮件(用户)。email@provider.com)如果格式正确,错误仍然存在。如果他们在电子邮件的结尾或甚至在电子邮件的中间(U.E.email @ PvaveServ

我正在使用jQuery验证程序验证文本字段中是否输入了正确的电子邮件地址。但是,似乎有时不会触发此验证器

情景: 用户在其电子邮件中输入“user.email.provider.com”。当他们打字时,验证器总是告诉他们电子邮件的格式不正确。它们突出显示“email”和“provider”之间的时间段,并将其更改为“@”。而电子邮件(用户)。email@provider.com)如果格式正确,错误仍然存在。如果他们在电子邮件的结尾或甚至在电子邮件的中间(U.E.email @ PvaveServer)中找到一个空格-错误就消失了。 下面是添加验证程序并使用正则表达式的代码:

self.initialize = function () {
    $.validator.addMethod("emailWithDomain", function (value, element) {
        return this.optional(element) || /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i.test(value);
    }, "Enter an Email Address in a valid email address format.");
    $("#pageForm").validate({ ignore: [] });
    $.each(self.rows(), function (index, key) {
        self[key.name] = key;
    });
};
self.initialize();
我相信它会应用到这里的元素:

self.render = function () {
    switch (self.id()) {
        case 'first-name':
        case 'middle-name':
        case 'last-name':
        case 'suffix':
            self.addLengthRequirement();
            break;
        case 'email':
            self.addLengthRequirement();
            self.selector().rules('add', {
                emailWithDomain: true
            });
            break;

    }
};
选择器如下所示:

self.selector = function () {
    return $('input[name=' + self.name() + ']');
};
似乎只有当值的长度发生变化时才会进行验证,而不是当按下某个键或键发生变化时


我无法提供完整的代码片段。我希望这些信息足够有人帮助指出这个问题。我对jQuery验证器和REGEX都不太熟悉,不知道到底是什么问题,但我有一个报告的bug,我相信这就是问题所在。如果有人能帮忙,我真的很感激。谢谢。

如果问题是验证没有按预期的时间间隔启动,请参阅按键盘或您选择的任何方式进行手动验证。另外,请查看并验证其行为是否符合记录。