-1
私はログインをチェックし、いくつかの異なることを実行する関数を持っています。次に、その関数をページの後半に呼び出すと、それが成功した後に別の関数を実行しようとしています。たぶん私の構造が正しくないかもしれませんが、私はかなり動き回ってみましたが、何も変わっていないか、コードが壊れているようです。たぶん、これはこれに最善の方法ではありません。何か案は。関数を呼び出すとコールバックが機能しない
function callLogin(callback) {
if (document.getElementById("userLoggedIn") === null) {
$(".cover").fadeIn(200, function() {
$(".sixPinInputContainer").fadeIn(200, function() {
$('.sixPinInput').first().focus()
$("#pageBody").css("overflow", "hidden");
var failedAttempts = 0;
var password = "";
$('.sixPinInput').keyup(function(k) {
//DATA ENTERED INTO FIELD
if (this.value.length == this.maxLength) {
password = password + this.value;
$(this).next('.sixPinInput').focus();
}
//PRESSING DELETE
if (k.keyCode == 8) {
$(this).prev().val("").focus();
password = password.slice(0, -1);
}
password = password.substring(0, 6);
$(".pinIncorrectMessage").css("display", "none");
});
$("#f").keyup(function(callback) {
if ($("#f").val().length > 0) {
$.post("http://heber/QC/includes/pinInput/getUserInfo.php", {
user: password
}, function(data, status) {
password = "";
$(".sixPinInput").val("");
$(data).each(function(index, value) {
var firstName = value.firstName;
var color1 = value.color1;
var color2 = value.color2;
var authorizationLevel = value.authorizationLevel;
var something = value.something;
//IF SUCCESSFUL LOGIN
if (firstName) {
$(".cover").fadeOut(200);
$(".sixPinInputContainer").fadeOut(200);
$("#pageBody").css("overflow", "scroll");
$("#userName").html(firstName);
$("#pageBody").css("background", "radial-gradient(at top left," + color1 + "," + color2 + ")");
$("#userSession").html("<div id='userLoggedIn'></div>");
password = "";
}
//IF FAILED LOGIN
if (!firstName) {
$(".pinIncorrectMessage").css("display", "block");
$(".sixPinInput").first().focus();
$(".sixPinInput").val("");
$("#userName").html(firstName);
$("#pageBody").css("background", "radial-gradient(at top left," + color1 + "," + color2 + ")");
password = "";
failedAttempts = failedAttempts + 1;
if (failedAttempts >= 3) {
alert("If you forgot your password Please have it reset, You have " + (6 - failedAttempts) + " more Attempts");
};
if (failedAttempts >= 6) {
$(".cover").css("background-color", "black").css("z-index", "2000").css("cursor", "none");
}
}
})
})
}
})
});
});
};
callback();
};
ここで私は関数を呼び出し、ログインが完了する前にコードを実行します。
callLogin(function() {
$("#" + rowID).load("eventHandlersPHP/updateStart.php", {
roomID: id }, function(data, status) {
$("#notStartedCount").load("eventHandlersPHP/jobsNotStartedCount.php");
});
});
Ajax呼び出しの内部で、それはすぐに実行されます当然のように、だけでなく、あなたが....それを呼び出すありません。 – epascarello
あなたはいくつかの 'fadeIn'呼び出しを関数パラメータで持っていますが、' callback(); 'はそれらの関数の外に置かれているようです。だから、 'callback();'は 'fadeIn'の呼び出しが完了するとすぐに実行されます。本当にすばやく実行されます。関数のパラメータが開始されるのを待たず、完了するのを待っているからです。 –