在validateUsername函數有可能在服務器端完成用戶名檢查之前,表單提交時出現問題。如何在提交表單之前等待ajax驗證完成?
如何在validateUsername函數完成後才提交表單? 希望這個很清楚...
form.submit(function(){
if (validateUsername() & validateEmail() & validatePassword()) {
return true;
} else {
return false;
}
});
function validateUsername(){
usernameInfo.addClass("sign_up_drill");
usernameInfo.text("checking...");
var b = username.val();
var filter = /^[a-zA-Z0-9_]+$/;
$.post("../username_check.php",{su_username:username.val()},function(data) {
if (data=='yes') {
username.addClass("error");
usernameInfo.text("sorry, that one's taken");
usernameInfo.addClass("error");
return false;
} else if (!filter.test(b)) {
username.addClass("error");
usernameInfo.text("no funny characters please");
usernameInfo.addClass("error");
return false;
} else {
username.removeClass("error");
usernameInfo.text("ok");
usernameInfo.removeClass("error");
return true;
}
});
}
哇我frickin喜歡這個網站!感謝您的快速和簡潔的回覆。我打算保留客戶端正則表達式驗證,但在提交時將用戶名檢查移到服務器端。 – Jung
從頭開始......遵循Adam和Pim Jager的建議,將form.submit轉換爲submit.click,而不是返回true,創建一個變量usernameIsOkay = true; submit.click(函數(){ validateUsername();如果 (usernameIsOkay){ form.submit();} }); – Jung