我有一个非常基本的代码,其中有两个 HTML 页面,index.html
是基本身份验证页面,crap.html
是我所在的页面,好吧,一些废话。
现在,我在 index.html
上有一个表单,其中附加了 onsubmit()
处理程序,以便我可以检查用户名和密码。如果正确,它会显示一条消息并继续将用户重定向到 crap.html
。
现在的问题是,此重定向似乎适用于错误的凭据,但当给出正确的凭据时,它会自动重新加载 index.html
页面,即使 中没有用于重定向的代码auth.js
。
代码如下:
<小时/>auth.js
function passCheck(){
var user = document.getElementById("username").value;
var pass = document.getElementById("password").value;
var error = document.getElementById("error");
var set_user = "admin";
var set_pass = "admin";
if(user==set_user && pass==set_pass){
error.style.color="green";
error.innerHTML = "AUTHENTICATED CORRECTLY. REDIRECTING NOW.";
setTimeout(function(){
window.location.href="../crap.html";
}, 3000);
}else{
error.style.color="red";
error.innerHTML = "WRONG CREDENTIALS. REDIRECTING NOW.";
setTimeout(function(){
window.location.href="../index.html";
}, 1000);
}
}
<小时/>
index.html
<html>
<head>
<title>Authentication</title>
<script src="js/jquery.js"></script>
<script src="js/auth.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<form onsubmit="passCheck()">
<table border=0>
<tr>
<td>Username</td>
<td><input type="text" id="username" placeholder="Username" required autofocus></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" id="password" required></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="AUTHENTICATE">
</td>
</tr>
</table>
</form>
<center>
<div id="error"></div>
</center>
</body>
</html>
最佳答案
重新加载页面的原因是表单提交到同一页面。您的表单没有操作属性。为了防止表单实际提交,您需要从提交处理程序中返回 false;
。
或者,在提交处理程序中设置表单操作。您可以使用 jQuery 轻松完成此操作.
关于javascript - JS 重定向未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596056/