使用window.location.href重定向表单的提交

Akh*_*oes 6 html forms

尝试这个简单的代码,我很惊讶它没有用,我们走了:

<form method="get" action="" >
    <input type="submit" value="validate" onclick="redirect(); alertIt(); "/>
</form>
<script>
    function redirect(){
       window.location.href = "test.html" ;
    }
</script>
<script>
function alertIt(){
   alert("redirect");
}
</script>
Run Code Online (Sandbox Code Playgroud)

代码只是在点击提交按钮时重定向到"test.html",但它没有做到.另一方面:alertIt()工作正常......我的问题如下:事件处理表单中是否有一些我应该知道的特殊规则?

Ben*_*aum 11

如果您希望表单不提交,则需要返回false.

function redirect(){
       window.location.href = "test.html" ;
}
Run Code Online (Sandbox Code Playgroud)

应该

function redirect(){
    window.location.href = "test.html" ;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

您还应该submit优先挂钩事件而不是click事件,并在处理程序中返回.

onclick="return redirect(); alertIt(); " 
Run Code Online (Sandbox Code Playgroud)

会工作(但不警惕)

最理想的是,您要做的是在表单中添加一个id,例如myForm,并为其附加一个事件.

document.getElementById("myForm").addEventListener("submit",function(){
    alertIt();
    return redirect(); 
},false);
Run Code Online (Sandbox Code Playgroud)

  • @Gloserio我不明白你所说的“提交重定向”是什么意思,如果你想提交到另一个页面,你可以设置表单的`action`属性,例如`&lt;form action='test.html'&gt; ` (2认同)
  • @Gloserio - 您的表单要么提交到“action”属性中定义的 URL,要么运行一些取消提交的脚本。你不能两者兼得。但是,您可以将表单提交到一个页面,然后该页面发出 302 重定向到另一个页面。 (2认同)