Javascript - 简单的登录重定向

Javascript - Simple Login Redirection

本文关键字:登录 重定向 简单 Javascript      更新时间:2023-09-26

一直在阅读一些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 是一个字符串,而不是一个函数,因此将其作为函数调用将抛出一个 except 并中止脚本
  2. 您不会从事件处理程序返回false,因此表单将提交并覆盖您要对location执行的任何操作
  3. 有一个作业,您正在尝试执行比较

要解决此问题,请执行以下操作:

  1. 为位置分配值: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";

它是一个对象,而不是一个函数。