我有一些带有一些输入的基本html表单。我的文件是“form.php”,一旦数据发送到表单,我想弹出一个然后重定向到我的主页。无论出于何种原因,这段代码
<script>
document.getElementById("myForm").addEventListener("submit",function(){
alertIt();
return redirect();
},false);
function redirect(){
window.location.replace = "index.html" ;
}
function alertIt(){
alert("Thank you for your feedback!");
}
</script>
会产生一个有效的弹出窗口,但是一旦出现弹出窗口,我需要"/form.php"
而不是将我重定向到index.html。任何帮助将不胜感激。
答案 0 :(得分:1)
为什么不将表单发送到php文件然后使用header("Location: index.html");
重定向到索引?
答案 1 :(得分:0)
您必须从事件处理程序返回false
以防止事件的默认操作,该操作会提交表单并重新加载结果。
document.getElementById("myForm").addEventListener("submit",function(){
alertIt();
redirect();
return false;
},false);
此外,您的redirect
功能错误。 window.location.replace
是您应该调用的函数,而不是您指定的属性;该属性为window.location.href
。
答案 2 :(得分:0)
您需要告诉页面取消表单的默认操作。
使用现有代码执行此操作的最简单方法是,只需从redirect()
函数返回false。
function redirect() {
return false;
}
更好的方法可能是使用event
对象的preventDefault()
方法:
var submitHandler = function (e) {
e = e || window.event;
e.preventDefault();
e.returnValue = false; //For older browsers
alertIt();
redirect();
return false;
};
document.getElementById("myForm").addEventListener("submit", submitHandler, false);
function redirect(){
window.location.href = "index.html";
}
function alertIt(){
alert("Thank you for your feedback!");
}
请注意,您只是更换了窗口的位置,而不是告诉它重定向。
window.location.replace = "index.html"; //This sets the new location, but doesn't redirect
与
相比window.location.href = "index.html"; //This causes the page to redirect immediately.