jQuery验证电子邮件验证问题

时间:2015-02-01 05:51:46

标签: jquery regex jquery-validate

我正在尝试进行故障排除并修复我的电子邮件验证无法正常工作的原因。假设检测到无效的电子邮件:它有太多......(点),除了欧洲地址(test@tom.uk.tk)以及test@aol.com之外。但是现在它除了一个点外,如果你没有完成打字,只要它没有@,只要你没有添加(。)点。有人请帮助我解决我的错误吗?

<script>
     $("#form").validate({
    rules: {
        firstname_1: {
            required: true
        },
        email_1: {
            required: true,
            email: true
        },
        // Same for other fields
    },
    messages: {
        firstname_1: "This field is required.",
        email_1>: "Please enter valid email address.",
        // Repeat for other fields
    }
});
function isValidEmail(email_1)
{
    return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email_1)
        && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email_1);
}
</script>

1 个答案:

答案 0 :(得分:9)

假设您已经拥有正确的验证逻辑和/或正则表达式,那么您需要使用the .addMethod() method创建自己的规则。

$("#form").validate({
    rules: {
        firstname_1: {
            required: true
        },
        email_1: {
            required: true,
            myEmail: true  // <- declare your custom rule
        },
        // Same for other fields
    },
    messages: {
        firstname_1: "This field is required.",
        email_1: "Please enter valid email address.",
        // Repeat for other fields
    }
});

// create your custom rule
jQuery.validator.addMethod("myEmail", function(value, element) {
    return this.optional(element) || /* your regex boolean logic goes here */;
}, 'Please enter valid email address.');

注意:messages中的字段名称也存在语法/拼写错误。应该是email_1,而不是email_1>

See this answer了解使用.addMethod()的正确方法。