Wenn ein Problem auftritt, bei dem das Formular vor der validateUsername-Funktion übermittelt wird, besteht die Möglichkeit, die Überprüfung des Benutzernamens auf der Serverseite abzuschließen.Wie warten Sie, bis die Ajax-Validierung abgeschlossen ist, bevor Sie ein Formular abschicken?
Wie reiche ich das Formular erst nach Abschluss der Funktion validateUsername ein? Hoffnung, das ist klar ...
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 ich frickin liebe diese Seite! Danke für die schnellen und prägnanten Antworten. Ich plane, die clientseitige Regex-Validierung beizubehalten, aber bewege den Benutzernamen beim Submit auf die Serverseite. – Jung
kratzen, dass ...folgte dem Rat von Adam und Pim Jager, wechselte das Formular submit zu submit.click und erzeugte anstatt einer wahrheitsgetreuen Antwort eine Variable usernameIsOkay = true; submit.click (function() { validateUsername(); if (usernameIsOkay) { form.submit(); } }); – Jung