Ajax电子邮件地址验证器

时间:2013-01-06 00:12:25

标签: php jquery ajax forms

目前,以下脚本使用ajax检查数据库,以查看之前是否使用过该电子邮件地址。我的问题是如何阻止它检查数据库,直到它是一个完全定义的EMAIL地址?

表单字段

<label for="email">Email: *&nbsp;</label><br/>
     <input id="username" name="username" type="email" value="" onblur="return check_username();" />

AJAX脚本

<script type="text/javascript">

$(document).ready(function() {
    $('#Loading').hide();    
});

function check_username(){

    var username = $("#username").val();
    if(username.length > 2){
                $.post("../script/check_username_availablity.php", {
            username: $('#username').val(),
        }, function(response){
            $('#Info').fadeOut();

            setTimeout("finishAjax('Info', '"+escape(response)+"')", 450);
        });
        return false;
    }
}

function finishAjax(id, response){

  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn(1000);
} 

</script>

2 个答案:

答案 0 :(得分:1)

而不是if(username.length > 2){...使用类似的东西:

if (/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(username.val())) {...

答案 1 :(得分:0)

请参阅http://jsfiddle.net/cmontgomery/gEL7n/

非常类似于ialencar发布的内容:

isValidateEmail = function(email) { 
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
} 

check_username = function() {
    var username = $("#username").val();
    if(isValidateEmail(username)) {
        $("#username-error").html("");
        console.log("ajax request...");
    } else {
        $("#username-error").html("invalid email address");
    }
}