繁体   English   中英

jQuery自定义验证无法正常工作

[英]Jquery Custom Validation not working properly

我处于无法使用Jquery的validate插件的情况。 所以我写了一个自定义验证器。 但是由于某些原因,测试功能无法正常工作。

代码运行良好,直到if (format.test(email)) {为止。 请分享您的知识。 提前致谢

$(document).ready(function () {
    $("#MainContent_btnSubmit").click(function () {
        validateEmail();

    });
});






function validateEmail() {

    var format = "[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]";
    var email = $("#MainContent_txtEmail").val();


    if (format.test(email)) {
        alert("Correct Email");
    }
    else {
        alert("Wrong Email");
    }

首先,正则表达式不以字符串形式编写。 它们具有自己的文字类型:

var format = /[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]/;

其次,每个字符类仅匹配一个字符。 还有一个. 如果不转义,则为通配符。 此外,如果email任何子字符串满足该模式,则test将报告为true。 因此,您需要锚定模式。 您可能意思是这样的:

var format = /^[a-zA-Z._0-9]+@[a-zA-Z.0-9]+\.[a-zA-Z]+$/;

第三, 匹配有效的电子邮件地址比您想象的要难。

format必须是RegExp对象:

var format = new RegExp("[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]");

此外,我怀疑您希望该值仅包含电子邮件,因此请使用锚点:

var format = new RegExp("^[a-zA-Z._0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+$");

您可以使用正则表达式"^[a-zA-Z._0-9]+@[a-zA-Z0-9]+\\\\.[a-zA-Z]+$"并使用它创建一个RegExp对象

我不确定这是否是复制粘贴错误,但是看着您的函数代码,您可以看到您尚未关闭函数validateEmail()

我认为您或者像这样缺少顶部的jquery插件:

<script src='path-to-your-jQuery-plugin' type='text/javascript'></script>

要么

function validateEmail() {

var format = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
var email = $("#MainContent_txtEmail").val();


    if (format.test(email)) {
        alert("Correct Email");
    }
    else {
        alert("Wrong Email");
    }
}    // in your code here you missed the closing tag of the function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM