0
我正在檢查數據庫中的重複電子郵件。首先我檢查有效的電子郵件,然後檢查電子郵件的長度,然後我使用ajax檢查數據庫中的電子郵件所以返回true或返回false不工作在ajax code.other驗證是好的,但檢查重複的電子郵件不工作。也ajax響應是好的。
這裏我的js文件 -
返回true/false在阿賈克斯代碼不工作
$(document).ready(function(){
var form = $("#form");
var registeremail = $("#registeremail");
var emailInfo = $("#emailInfo");
registeremail.blur(validateEmail);
registeremail.keyup(validateEmail);
form.submit(function(){
if( validateEmail())
return true;
else
return false;
});
function validateEmail(){
//testing regular expression
var a = $("#registeremail").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-][email protected][a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
//if it's valid email
if(filter.test(a)){
registeremail.removeClass("error");
emailInfo.text("");
emailInfo.removeClass("error");
if(registeremail.val().length < 8){
registeremail.addClass("error");
emailInfo.text("Min 8 letters required.");
emailInfo.addClass("error");
return false;
}
else if(registeremail.val().length > 60){
registeremail.addClass("error");
emailInfo.text("Max 60 letters required.");
emailInfo.addClass("error");
return false;
}
else
{
$.ajax({
url: "home/CheckEmail",
data: {
email: a
},
success: function(ret)
{
if(ret=='1')
{
registeremail.addClass("error");
emailInfo.text("Email already exist.");
emailInfo.addClass("error");
return false;
}
else if(ret != '1')
{
registeremail.removeClass("error");
emailInfo.text("");
emailInfo.removeClass("error");
//document.forms["form"].submit();
return true;
}
}
});
}
}
//if it's NOT valid
else{
registeremail.addClass("error");
emailInfo.text("Valid e-mail please");
emailInfo.addClass("error");
return false;
}
}
});
$ .ajax返回jQuery,而不是您傳遞給它的成功或失敗回調的返回值。最好的辦法是執行回調中的所有邏輯,或者觸發外部函數並將返回值作爲參數傳遞。 – 2013-03-08 06:35:18
$ .ajax是異步的。你需要使用'async:false'選項來使用你的腳本:http://api.jquery.com/jQuery.ajax/ – sdespont 2013-03-08 07:03:05