onSubmit按钮不会加载位置

时间:2014-09-23 19:48:10

标签: javascript html forms onsubmit

我从type=click切换到type=submit,以便我可以使用Enter键登录。无效用户名/密码的if / else语句功能正常。但是,如果我输入正确的凭据,它将不会加载位置(不同的HTML页面。)

PS:我是一般的新编码(仅仅3周)尝试解释它,以便新手知道。 提前谢谢。

<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>

3 个答案:

答案 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

JSFiddle demo here

答案 2 :(得分:0)

执行此操作的新方法 - 在行

处设置断点
if(username=="test") {

然后逐步找出问题所在。

旧学校这样做的方式(从我们使用Javascript调试器之前开始)是警告每个块中的消息,并找出为什么要进入该块开始。它比调试器更麻烦,但有时你可能需要诉诸旧学校的黑客。