Имея проблему, когда форма отправляется перед функцией 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;
}
});
}
Wow I frickin love this site! Спасибо за быстрые и сжатые ответы. Я планирую сохранить проверку регулярного выражения на стороне клиента, но переместите проверку имени пользователя на серверную сторону в submit. – Jung
царапина ...следуя советам Адама и Пима Ягера, переключил форму. передать для submit.click и вместо того, чтобы возвращать true, создал переменную usernameIsOkay = true; submit.click (функция() { validateUsername(); если (usernameIsOkay) { form.submit();} }); – Jung