簡體   English   中英

Javascript-簡單登錄重定向

[英]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>

存在三個問題:

  1. href是一個字符串,而不是一個函數,因此將其作為函數調用將拋出一個exception並且中止腳本
  2. 您不會從事件處理程序中返回false ,因此表單將提交並覆蓋您對location所做的所有操作
  3. 您有一個作業要嘗試進行比較

要解決此問題:

  1. 為location 分配一個值: location = "http://www.google.com/";
  2. 從事件處理程序返回: onsubmit="return loginCheck();"
  3. 注意在哪里使用===

請注意,固有事件屬性是我們在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM