javascript - 为什么我的重定向代码不工作,但我的警报工作?请更正我的代码并检查
问题描述
这是我的代码,这条线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>
解决方案
触发导航的分配,window.location
但随后 JS 完成,正常的表单提交继续,触发导航到表单action
(取消先前的导航指令)。
您需要取消默认行为。
通常,这样做的方法是将事件侦听器绑定到表单的提交事件(而不是按钮的单击事件)。
例如
function checkPswd(event) {
event.preventDefault();
// etc...
}
addEventListener('DOMContentLoaded'), () => {
document.querySelector('form').addEventListener('submit', checkPswd);
});
但是请注意,任何涉及要求用户浏览器自行授权的密码系统都是没有意义的。
推荐阅读
- sql - MS Access 查询以选择不在表中的项目
- python - 如何做到这一点?
- mysql - 如何在 laravel 查询生成器中将 OR 子句放在 AND 子句之后?
- postgresql - 关于递归 SQL 查询、它们的性能和无限递归
- database - Jmeter无法连接到数据库(Postgres)
- coldfusion - 解码 HTML 和 Excel 问题
- python - Python 返回“str”对象没有属性的错误消息
- laravel - 我的应用程序的 Twiml xml 存储在哪里?
- python - 从数据框中制作适合特定特征的列表
- javascript - 如何排除 div 内的元素不受 div 函数的影响?