jQuery在我输入时验证电子邮件

时间:2012-01-04 22:16:16

标签: jquery

以下代码的目标是,如果文本字段中的电子邮件地址有效,则提交按钮将变为活动状态。

我使用模糊工作,但它似乎不适用于键盘事件。 有什么想法吗?

$(document).ready(function(){                   
    // default values
    var email = $("#newsletter_email");
    var button = $("#subscribe");
    var a = $(email).val();
    var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;

    // disable submit
    $(button).attr("disabled", "disabled");
    $(button).css("background-color","#CCC");

    $(email).keydown(function(event) {
        if(filter.test(a)){
            button.attr("disabled", "enable");
            button.css("background-color","#663399");
        }
    });
});

1 个答案:

答案 0 :(得分:2)

即使您在键盘事件上触发事件,该方法的其余部分也是错误的。

您根本无法使用该正则表达式验证所有合法的电子邮件地址,并且没有合理的正则表达式可以。

唯一可靠的方式是将数据的AJAX帖子执行到您的服务器,您应该在其中执行MX记录的动态DNS查找(如果那些'存在,域部分的A或AAAA记录。

对于它的价值,它实际上不适用于.keydown()的原因是因为变量a仅在外部函数的开头设置一次 - 您需要将调用移至$(email).val() 内的.keydown() 处理程序,以便每次按下某个键时都会获取其值。