表单验证无法正常工作

时间:2015-07-22 08:40:25

标签: javascript php ajax

我想问一下,这是怎么回事。我尝试在电子邮件中实现表单验证,用户密钥,它将触发检查用户名是否存在的功能。

jQuery(document).ready(function() {

$('.register form').submit(function(){

    $(this).find("label[for='email']").html('Email');

    var email = $(this).find('input#usr_email3').val();

    var email_prefix = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

    if(email != '' && email_prefix.test(email) == 1) {

        $.post("checkemail.php", {usr_email: email} , function(data){           
        if (data != '' || data != undefined || data != null) {                 
                localStorage.setItem("email_status" , data);
            }
            else
                localStorage.setItem("email_status" ,"No");
        });

        if(localStorage.getItem("email_status") == 1)
        {
            $(this).find("label[for='email']").append("<span style='display:none;  font-size:12px;' class='red'> - Email already exist.</span>");
            $(this).find("label[for='email'] span").fadeIn('medium');
            return false;
        }
    } });

为此,是的,它是有效的。但问题是,如果用户单击两次提交按钮,它将仅检查现有用户名。

例如,如果我键入 abc@yahoo.com ,如果它存在,则会触发该消息。所以,我更改了电子邮件地址(不存在),如果我提交,它仍然会触发消息,我第二次提交,然后电子邮件有效。

我知道问题在这里:

if(email != '' && email_prefix.test(email) == 1) {

        $.post("checkemail.php", {usr_email: email} , function(data){           
        if (data != '' || data != undefined || data != null) {                 
                localStorage.setItem("email_status" , data);
            }
            else
                localStorage.setItem("email_status" ,"No");
        });

        if(localStorage.getItem("email_status") == 1)
        {
            $(this).find("label[for='email']").append("<span style='display:none;  font-size:12px;' class='red'> - Email already exist.</span>");
            $(this).find("label[for='email'] span").fadeIn('medium');
            return false;
        }
    }

它会转到

if(localStorage.getItem("email_status") == 1){}

然后回到

$.post(..

所以它导致

localStorage.getItem("email_status")

值只会在第二次点击时更新。 无论如何要解决它吗?或任何其他方式来做更多&#34;美丽&#34;?

0 个答案:

没有答案