使用jQuery检查有效电子邮件

时间:2013-09-24 09:40:09

标签: javascript jquery

我正在尝试使用jQuery查看用户是否在我的文本框中输入了有效的电子邮件地址。 基本上,我希望提交按钮默认保持禁用状态,但是在每个键盘上我想看看电子邮件地址是否有效,那么我想启用该按钮。如果用户输入有效的电子邮件,但随后删除部分以使其再次失效(即@符号),我希望再次禁用提交按钮。

我这里有一个部分工作的脚本。我的支票或@符号效果很好,但我很难检查.com,.co,.net,.org,.edu等...出于某种原因,即使我没有输入按钮,该按钮也会保持启用状态电子邮件的有效“结尾”。

例如,“emailco @”被识别为有效的电子邮件。这是我的剧本:

<script>
$(document).ready(function() {

    $('#email').bind('keyup', function(e) {

        var email = document.getElementById("email");

        if (email.value.search("@") != -1) {

            if (
            (email.value.search(".com") != -1)||
            (email.value.search(".co") != -1)||
            (email.value.search(".org") != -1)||
            (email.value.search(".net") != -1)||
            (email.value.search(".gov") != -1)||
            (email.value.search(".biz") != -1)||
            (email.value.search(".me") != -1)||
            (email.value.search(".edu") != -1)) {

            document.getElementById("email_go").disabled = false; 
        }

        else {
            document.getElementById("email_go").disabled = true; 
        }
        }

        else {
            document.getElementById("email_go").disabled = true; 
        }
    }); 
});
</script>

4 个答案:

答案 0 :(得分:1)

var email = $('#email').val();
    var pattern = ".+\\@@.+\\..+";
        var valid = email.match(pattern);
        if (valid == null) {
           alert("Not Valid");
           return;
        }
    else{
           alert("Valid");
           return;
    }

答案 1 :(得分:1)

只需使用正则表达式:

if (email.value.search("@") != -1) {

    if (/(.+)@(.+)\.(com|edu|org|etc)$/.test(email.value))
}

答案 2 :(得分:1)

试试这个。当然,这只是一个基本的例子,我确信现在的电子邮件地址可能不仅仅是下面数组中指定的内容。但是,仍然......你明白了......

//  Split the email to see if there's an "@" character
    var split = email.split('@');
    var split_count = split.length;

//  If there is, then split the second string by a "."
    if (split_count == 2) {
        var domain = split[1].split('.');
        var domain_count = domain.length;

        if (domain_count == 2) {
//          Store all of the accepted values for email endings
            var endings = ['org', 'com', 'net', 'edu', 'info', 'biz', 'me'];
            var result = $.inArray(domain[1], endings);

//          If the final 3 chars of the string are in the array, then proceed
            if (result > 0) {

            }
      }
  } 

答案 3 :(得分:1)

我使用此正则表达式代码使用jQuery测试电子邮件格式:

var email = $('.email').val();
    if(email.match(/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/))
    {
        alert('OK');
    }