需要帮助在提交时重定向表单

Posted

技术标签:

【中文标题】需要帮助在提交时重定向表单【英文标题】:Need help to redirect the form on submit 【发布时间】:2012-12-19 17:01:27 【问题描述】:

我需要帮助。当我提交此表单时,我希望它自动重定向到选择列表中的值选项(即 url)。

所以在选择列表中选择的艾哈迈达巴德按下提交时,它应该重定向到http://intranet.guj.nic.in/passport

目前它没有重定向。 使用内联 javascript 代码的最佳方法是什么?

<html><body>
<form  id="pass-form" >
<select id="pass-dropdown" ><option selected="selected">Select Passport Office
for Status page </option><option value="http://intranet.guj.nic.in/passport/">Ahemadabad
</option><option value="http://passportstatus.nic.in/passmain.php?city=asr">Amritsar
</option><option value="http://rpobangalore.gov.in/npassport.asp">Bangalore
</option><option value="http://passportstatus.nic.in/passmain.php?city=bly">Bareilly
</option></select>
<input type="submit"  onsubmit="var sel = document.getElementById('pass-dropdown'); window.location = sel.options[sel.selectedIndex].value" />
</form>
</body>
</html>

【问题讨论】:

您可能想查看:***.com/questions/138884/… 和 css.dzone.com/news/why-inline-css-and-javascript- 另外你为什么不使用链接而不是下拉列表呢?或者,您可以通过服务器端脚本执行此操作。只需将标题设置为等于 $_GET['form']。 因为表单已经提交,window.location 不会触发。您需要阻止默认提交行为,或在服务器端处理它。 &lt;?php if (isset($_POST['pass-dropdown']) &amp;&amp; $_POST['pass-dropdown']) header('Location: ' . $_POST['pass-dropdown']);exit(); ?&gt; 之类的东西应该可以完成这项工作。 @Sam 我不想让 Google 知道我要重定向到哪里。 【参考方案1】:

在某些情况下,您可能必须使用return 来确保使用所需的返回值:

<form onsubmit="return redirectMe();">
  <input placeholder="Search" type="text">
</form>

... more code here ...

function redirectMe() 
  window.location.replace("http://***.com");
  return false;

来源:How to pass an event object to a function in Javascript?

【讨论】:

你拯救了我的一天。【参考方案2】:

type = "submit" 更改为按钮

<input type="button" onclick="var sel = document.getElementById('pass-dropdown'); window.location = sel.options[sel.selectedIndex].value" />

更新

<input type="button" onclick="var sel = document.getElementById('pass-dropdown'); 
       var frm = document.getElementById("pass-form"); frm.action = sel; frm.submit();" />

如果你把它放在一个函数中并调用这个函数会更好

【讨论】:

谢谢,但我想保留 type="submit" 是否可以更改表单中的 ACTION 并以相同的方式提交? 是的。 frm = document.getElementById("pass-form"); frm.action = sel; frm.submit();【参考方案3】:

onsubmit&lt;form&gt; 元素的事件,而不是提交按钮的事件。

将您的表单代码更改为:

<form id="pass-form" onsubmit="window.location.href = 'newlocation'; return false;">
...
    <input type="submit" value="Submit" />
</form>

【讨论】:

但是这样它不会重定向。 它将重定向代码放入 onsubmit 并返回 false。【参考方案4】:
<form  id="pass-form" onsubmit="var sel = document.getElementById('pass-dropdown'); window.location = sel.options[sel.selectedIndex].value" >
    ...
    <input type="submit" />
</form>

您必须对表单标签执行提交属性。然后它应该工作。 http://www.w3schools.com/jsref/event_form_onsubmit.asp

【讨论】:

使用window.location.replace(sel.options[sel.selectedIndex].value) 代替window.loaction = ... w3schools.com/jsref/met_loc_replace.asp

以上是关于需要帮助在提交时重定向表单的主要内容,如果未能解决你的问题,请参考以下文章

javascript 在提交联系表单7时重定向到URL,将以下代码放入您要重定向的表单上的“其他设置”选项卡中

javascript 在提交联系表单7时重定向到URL,将以下代码放入您要重定向的表单上的“其他设置”选项卡中

防止表单提交重定向

Django - 如何在发送邮件时重定向

Angular:如何在提交时重定向到另一个页面

在 Django 中,如何在提交 CreateView 时重定向到 UpdateView?