我从type=click
切换到type=submit
,以便我可以使用Enter键登录。无效用户名/密码的if / else语句功能正常。但是,如果我输入正确的凭据,它将不会加载位置(不同的HTML页面。)
<script type="text/javascript">
function check_info(){
var username = document.login.username.value;
var password = document.login.password.value;
if (username=="" || password=="") {
alert("Please fill in all fields")
} else {
if(username=="test") {
if (password=="test") {
location="Random.html"
} else {
alert("Invalid Password")
}
} else {
alert("Invalid Username")
}
}
}
</script>
<form name=login onsubmit="check_info()">
Username:
<input type="text" name="username" id="username"/>
<br>
Password:
<input type="password" name="password" id="password"/>
<br>
<br>
<input type="submit" value="Login"/>
</form>
答案 0 :(得分:2)
您需要在.href
location
location.href = "Random.html";
(另外,既然你说你是新手,一定要在编写JavaScript和测试时保持你的开发控制台(F12)打开 - 你很早就会发现很多错误)
答案 1 :(得分:1)
两件事:
1 - Proper way to simulate a clink on a link将使用更改href
的{{1}}属性,而不是location
本身。以下行应该有效:
location
2 - 当您重定向到另一个页面时,您必须“抑制”(停止)自然window.location.href = "Random.html";
事件。
换句话说,您必须在onsubmit
事件上return
false
,否则重定向(到onsubmit
)将无法工作,因为在重定向工作之前,submit事件将启动(并将用户senet到表单的Random.html
页面)。
所以将action
更改为:
<form name=login onsubmit="check_info()">
并在<form name=login onsubmit="return check_info()">
的末尾添加return false;
。
完整代码应如下:
check_info()
HTML(仅<script type="text/javascript">
function check_info(){
var username = document.login.username.value;
var password = document.login.password.value;
if (username=="" || password=="") {
alert("Please fill in all fields")
} else {
if(username=="test") {
if (password=="test") {
window.location.href = "Random.html"; // ------ CHANGED THIS LINE
} else {
alert("Invalid Password")
}
} else {
alert("Invalid Username")
}
}
return false; // ------------------------ ADDED THIS LINE
}
</script>
已更改):
onsubmit
答案 2 :(得分:0)
执行此操作的新方法 - 在行
处设置断点if(username=="test") {
然后逐步找出问题所在。
旧学校这样做的方式(从我们使用Javascript调试器之前开始)是警告每个块中的消息,并找出为什么要进入该块开始。它比调试器更麻烦,但有时你可能需要诉诸旧学校的黑客。