Onclick重定向不启动

时间:2013-03-08 06:50:52

标签: javascript html forms onclick

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

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

一切正常,期待重定向。我已经尝试了一些方法,但在表单提交后还没有重定向工作。

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

这是我的代码:

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

2 个答案:

答案 0 :(得分:0)

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

您可能希望触发Ajax请求而不是标准提交,并且仅在从Ajax请求获得响应时才进行重定向,因此您确定没有丢失任何信息。

答案 1 :(得分:0)

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

您可以了解此处发生的事件:http://javascript.info/tutorial/bubbling-and-capturing

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

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

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