私は少し問題があります。フォームが提出されたら、私はそれについていくつかのことを確認するつもりはなく、何か間違っていたら、それが送信されないようにして、クライアント側でエラーを表示したい。フォームが提出し続ける以外はすべて正常に動作しているようです。それは送信する前に分割された秒間、クライアント側でエラーを表示します。.preventDefault()が条件文で機能していません
$('#register').on('submit', function (e) {
e.preventDefault();
var username = $("#register-username"),
name = $("#register-name"),
email = $("#register-email"),
password = $("#register-password"),
confirmPassword = $("#register-confirmPassword");
checkUsername(function (res) {
if (res) {
checkEmail(function (res) {
if (res) {
this.submit();
} else {
clearErrors();
email.toggleClass('input-error');
}
});
} else {
clearErrors();
username.toggleClass('input-error');
}
});
});
function checkEmail(callback) {
$.get("/checkEmail/" + $('#register-email').val(), function (data) {
if (data == undefined) {
callback(true);
} else {
callback(false);
}
});
}
function checkUsername (callback) {
$.get("/checkUsername/" + $('#register-username').val(), function (data) {
if (data == undefined) {
callback(true);
} else {
callback(false);
}
});
}
function clearErrors() {
var arr = [
$("#register-username"),
$("#register-name"),
$("#register-email"),
$("#register-password"),
$("#register-confirmPassword")
];
arr.forEach(function(el) {
el.removeClass('input-error');
});
}
更新: は今、私はちょうど自分自身を混乱させています。 checkUsername()は私のサーバからundefinedを返します。私は事実を知っていますが、何とかcheckUsername()が呼び出された 'else'ステートメントに到達しています。残りのコードを追加しました。いくつかの混乱をクリアする必要があります。
あなたのコードを質問に入れてください。私たちはあなたの問題が何であるかを見直すために現地を離れてはいけません。現在および将来の読者の皆様には、質問は自己完結型でなければなりません。 – charlietfl