首页 > 解决方案 > 为什么我的重定向代码不工作,但我的警报工作?请更正我的代码并检查

问题描述

这是我的代码,这条线window.location = "https://www.google.com";不工作,但alert完全工作。请帮我。谢谢!

<!DOCTYPE html>
<html>
</html>
<head>
  <title>Document</title>
</head>
<body>
  <form>
    <label for="pswd">Enter your password: </label>
    <input type="password" id="myInput" autofocus>
    <input type="submit" id="myBtn" value="Submit" onclick="checkPswd();">
  </form>
  <script type="text/javascript">
    function checkPswd() {
      var confirmPassword = "admin";
      var password = document.getElementById("myInput").value;
      if (password == confirmPassword) {
        window.location = "https://www.google.com";
        // alert("correct");
      }
      else {
        alert("Password");
      }
    }       
  </script>
</body>        
</html>

标签: javascriptredirect

解决方案


触发导航的分配,window.location但随后 JS 完成,正常的表单提交继续,触发导航到表单action(取消先前的导航指令)。

您需要取消默认行为。

通常,这样做的方法是将事件侦听器绑定到表单的提交事件(而不是按钮的单击事件)。

例如

function checkPswd(event) {
    event.preventDefault();
    // etc...
}

addEventListener('DOMContentLoaded'), () => {
    document.querySelector('form').addEventListener('submit', checkPswd);
});

但是请注意,任何涉及要求用户浏览器自行授权的密码系统都是没有意义的。


推荐阅读