在提交注册表单之前检查电子邮件的唯一性

时间:2011-05-05 14:12:11

标签: javascript form-submit email-validation

在向服务器端提交注册表单之前,我在检查客户端的电子邮件唯一性方面遇到了麻烦。

submitButton.onclick = function(){
    var email = $('input[name = "email"]').val();
    var checkEmail;
    $.ajax({
        url: 'serverScripts/settings/checkEmailAvailability.php',
        data: {email: email},
        async: false,
        success: function(text){
            checkEmail = text;//Return "occupied" or "freeToUse"
        }
    });
    if(checkEmail == 'occupied'){
        return false;
    }
}

3 个答案:

答案 0 :(得分:0)

您的脚本位于:serverScripts / settings / checkEmailAvailability.php

期待一个名为“email”的变量

然后你的php脚本应该查询数据库并测试它是否可用,如果它在数据库中则返回“已占用”。

否则它是一个有效的电子邮件地址。

答案 1 :(得分:0)

我怀疑这是你对变量的命名。见本节:

$.ajax({
    url: 'serverScripts/settings/checkEmailAvailability.php',
    data: {email: email},
    async: false,
    success: function(text){
        checkEmail = text;//Return "occupied" or "freeToUse"
    }
});

可能应该是

data: {'email': email},

注意引号。就目前而言,您正在创建

的数据元素
{joe.blow@email.com, joe.blow@email.com}

虽然它应该是

{email: joe.blow@email.com}

答案 2 :(得分:-1)

我决定正确地执行该脚本:

<!DOCTYPE html>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<form action="javascript:alert('it went though pipes')" method="get">
<input type="email" name="email">
<input type="submit" name="submitButton" id="submitButton">
</form>
<script>
$('form').submit(function(){
    var email = $('input[name = "email"]').val();
    var checkEmail = $.ajax({
        url: 'serverScripts/settings/checkEmailAvailability.php',
        data: {email: email},
        async: false,
        success: function(data) {
            result = data;
        }
    });
    if(result.search('occupied')!=-1){
        alert("You've done something WRONG");
        return false;
    }
})
</script>

现在可能有一些解释。它使用jQuery。 <form action="...">只是为了好玩,将其替换为真实地址,并随意将<form>插入实际页面。现在出了什么问题? text在JS中保留,您无法使用它,因此我将其更改为data。另外,我决定在搜索“被占用”时使用.search并更改你使用的方法稍微提交一下:P。

我做了快速测试页面,如果你有兴趣:(如果你想知道,唯一接受的是pass@me.com)。

http://glitchmr.pl/nuda/test.html

(另外,$.ajax特定于jQuery,如果你还没有使用它)

相关问题