[英]Javascript - Simple Login Redirection
正在閱讀一些JavaScript教程,並試圖制作一個簡單的登錄系統。 為此,我使用了以下代碼。 警報行正確執行,但重定向行似乎未產生任何結果。
問題:如何使它起作用? 代碼有什么問題?
注意:我知道這不是安全的登錄系統。 當滿足不同條件時,我只需要它即可正確重定向。
我還嘗試了重定向行的不同語法(刪除引號,括號等)。 它們似乎都不起作用……以防萬一這只是語法錯誤。
碼:
<form name="loginForm" onsubmit="loginCheck()" method="post">
<input type="text" name="userName"><br>
<input type="text" name="passWord"><br><br>
<input type="submit" value="Login">
</form>
<script>
function loginCheck() {
var usr=document.loginForm.userName.value;
var psw=document.loginForm.passWord.value;
var username="admin";
var password="admin";
if ((usr==username) && (psw=password)) {
alert ("True Info");
window.location.href ("http://www.google.com");
return true;
}
else {
alert ("False Info");
window.location.href ("http://www.google.com");
return false;
}
}
</script>
存在三個問題:
href
是一個字符串,而不是一個函數,因此將其作為函數調用將拋出一個exception並且中止腳本 false
,因此表單將提交並覆蓋您對location
所做的所有操作 要解決此問題:
location = "http://www.google.com/";
onsubmit="return loginCheck();"
=
和==
。 請注意,固有事件屬性是我們在90年代編寫JavaScript的方式。 編碼實踐已得到改進,現在我們可以使用不引人注目的JavaScript來分離問題 。
function loginCheck(event) { var usr = this.elements.userName.value; var psw = this.elements.passWord.value; var username = "admin"; var password = "admin"; if ((usr == username) && (psw == password)) { alert("True Info - submitting form"); } else { alert("False Info - going to Google"); location = "http://www.google.com"; event.preventDefault(); } } document.getElementById('loginForm').addEventListener('submit', loginCheck);
<form id="loginForm" method="post"> <input type="text" name="userName"> <br> <input type="text" name="passWord"> <br> <br> <input type="submit" value="Login"> </form>
另外,請注意,嘗試完全在客戶端進行身份驗證是愚蠢的事情。 它可以用作基本事件處理的示例,但切勿實際嘗試。
這是一個問題:
if ((usr==username) && (psw=password)) {
注意單=符號嗎? 這意味着您正在分配而不是進行比較。
if ((usr==username) && (psw==password)) {
更改為上述內容,然后查看是否可行。
只需使用:
window.location.href = "http://www.google.com";
它是一個對象,而不是一個函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.