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