0

单击表单提交按钮后,我试图将用户重定向到另一个页面。

我正在尝试触发一些事件,这些事件会自动填写表单的某些部分,然后提交表单并最终将用户重定向到另一个页面。

一切正常都需要重定向。我已经尝试了一些事情,但在表单提交后还没有让重定向工作。

我也不希望用户在表单成功提交之前被重定向。

这是我的代码:

<form id="usp_form" method="post" enctype="multipart/form-data" action="">
  <input class="usp_input" type="text" name="user-submitted-title" id="user-submitted-title" value="" />
  <input class="usp_input" type="text" name="user-submitted-url" id="user-submitted-url" value="">
  <input class="usp_input" type="text" name="user-submitted-tags" id="user-submitted-tags" value="">
  <input class="usp_input" type="text" name="user-submitted-category" id="user-submitted-category" value="">
  <textarea class="usp_textarea" name="user-submitted-content" id="user-submitted-content" rows="5"></textarea>
  <input class="hidden" type="hidden" name="user-submitted-name" value="<?php echo $current_user->user_login; ?>">

  <input onClick="copyText();copyText2();copyText3();handleClick();" class="usp_input" type="submit" name="user-submitted-post" id="user-submitted-post" value="Submit Post">
</form>



<script language="javascript" type="text/javascript">
function copyText3() {
var output1 = document.getElementById("edit1").innerHTML;
var output2 = document.getElementById("edit2").innerHTML;
document.getElementById("user-submitted-title").value = output1 + ', ' + output2;
}
</script>

<script language="javascript" type="text/javascript">
function copyText2() {
var output1 = document.getElementById("edit1").innerHTML;
var output2 = document.getElementById("edit2").innerHTML;
var output3 = document.getElementById("template").innerHTML;
document.getElementById("user-submitted-tags").value = output1 + ', ' + output2 + ', ' + output3;
}
</script>

<script language="javascript" type="text/javascript">
function copyText() {
var output = document.getElementById("templatebody").innerHTML;
document.getElementById("user-submitted-content").value = output;
}
</script>

<script language="javascript" type="text/javascript">
function handleClick() {
window.location.href='http://website.com/';
}
</script>
4

2 回答 2

0

提交按钮将启动一个请求,但您还在按钮按下时定义了一个重定向请求,因此一个会覆盖另一个(我不确定哪个,它可能取决于浏览器)。

您可能希望触发 Ajax 请求而不是标准提交,并且仅当您从 Ajax 请求中获得响应时才进行重定向,这样您就可以确定没有信息丢失。

于 2013-03-08T07:01:00.067 回答
0

您不应该像 is 那样编写代码,而是在 de HTML 之外的事件上注册您的函数(最好将 HTML、JS 和 CSS 分开)。

您可以在这里了解有关冒泡的事件:http: //javascript.info/tutorial/bubbling-and-capturing

如果您只想查看代码正常工作而不验证表单,只需添加“return false ;” 在 onclick 属性的末尾。

编辑:抱歉,您要提交表单,然后重定向。您可以使用 ajax 请求来执行此操作(请参阅http://www.w3schools.com/xml/xml_http.asp):您在 ajax 中提交表单,然后重定向。

但是 IMO,这是一种服务器端行为:您可能有一种动态语言(Python、PHP、ASP...?)来处理您的表单提交。在这里,您必须在此过程后重定向。

于 2013-03-08T07:02:09.793 回答