提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
正在阅读一些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>
存在三个问题:
href
是一个字符串,而不是一个函数,因此将其作为函数调用将抛出一个exception并且中止脚本 false
,因此表单将提交并覆盖您对location
所做的所有操作 要解决此问题:
location = "http://www.google.com/";
onsubmit="return loginCheck();"
=
和==
。 请注意,固有事件属性是我们在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";
它是一个对象,而不是一个函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.