[英]Javascript statements are executing after return
這是我的代碼:
$.each(json.ids, function(i, v) {
if ($("#user").val() === v.username) {
if ($("#pw").val() === v.password) {
window.location = '/menu.html';
return; //THIS RETURN
}
$("#errorblock").text("incorrect password").show().fadeOut(1000);
return false;
}
event.preventDefault();
$("#errorblock").text("no user found").show().fadeOut(1000);
});
json是一個包含json格式數據的變量。 奇怪的是,一旦您輸入了嵌套的if( if ($("#pw").val() === v.password)
),該窗口將正確地更改為menu.html,但單詞為“ if ($("#pw").val() === v.password)
password”或“未找到用戶”將在更改窗口之前閃爍。 我可以通過某種解決方法來解決此問題,但我很好奇為什么會發生-返回是否不應該停止執行代碼? 在這里是否有一些語法(或其他)錯誤應糾正以防止這種情況發生?
而不是在每個邏輯中執行邏輯,而是在處理之前先找到用戶。
var username = $("#user").val(); var password = $("#pw").val(); //find the user based on their username var user = $.grep(json.ids, function(user){ return user.username === username; }); //if you found a user, check their password if (user.length) { if (user[0].password === password) { //redirect them for good case window.location = '/menu.html'; } else { //show incorrect password message $("#errorblock").text("incorrect password").show().fadeOut(1000); } } else { //no user found, do whatever event.preventDefault(); $("#errorblock").text("no user found").show().fadeOut(1000); }
但是,我應該指出,在前端執行密碼驗證是一個非常糟糕的主意 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.