【问题标题】:Redirect form after button click depending on dropdown box selection单击按钮后根据下拉框选择重定向表单
【发布时间】:2013-09-11 19:18:52
【问题描述】:

我正在编写一个表单,希望用户能够根据选择重定向到四个单独页面之一。为此,我实现了一个包含所有选项的下拉选择框。我想要的是在此框中进行的选择以在单击按钮提交时更改表单重定向 url。我已经看到了这个问题的其他一些例子,但遇到了一些错误。例如,我尝试了一个我看到的 jQuery 修复程序,但是一旦选择了下拉选项,它就会将用户重定向到一个新页面。

这是我的表单代码

<form action="" id="search-form" method="post" onChange="">
    <input name="retURL" value="thankyou.html" type="hidden">
        <label for="firstname" class="half first-half">
      <input type="text" name="First Name" id="firstname" placeholder="FIRST NAME*" autofocus required>
    </label>
    <label for="lastname" class="half second-half">
      <input type="text" name="Last Name" id="lastname" placeholder="LAST NAME*" required>
    </label>
     <label for="email" >
      <input type="email" name="Email" id="email" placeholder="EMAIL*" required>
    </label>
    <label for="phone" >
      <input type="tel" name="Phone" id="phone" placeholder="PHONE*" required >
    </label>
    <label>
    <select id="selectbox" name="">
        <option value="0" selected>PROPERTY OF INTEREST*</option>
        <option value="thankyou1.html">Adako Crossing</option>
        <option value="thankyou2.html">Hayes Haven</option>
        <option value="thankyou3.html">Pinion</option>
        <option value="thankyouall.html">All Properties</option>
    </select>
    </label>
      <textarea name="comments" id="comments" placeholder="COMMENTS"></textarea>
        <button type="submit" id="get_info" name="submit"></button>
</form>

【问题讨论】:

  • 你能给我们看看你的 jquery 吗?
  • 尝试将重定向绑定到表单上的提交事件,而不是选择框上的更改。

标签: jquery html forms


【解决方案1】:

您可以创建一个隐藏的&lt;input&gt; 字段,如下所示:

<input type="hidden" id="myHiddenField">

在用户选择一个选项后,将 URL 保存到隐藏的输入字段中:

$("#selectbox").on("change", function(){
    $('#myHiddenField').val(this.value);
});

然后,您的 javascript 可能看起来 类似于(未经测试):

$('#search-form').submit(function(e) {
    var url = $('#myHiddenField').val();
    alert(url);
    window.location.replace(url);
    //e.preventDefault(); //<== prevent form submission, IF DESIRED
});

jsFiddle


就个人而言,我更喜欢使用type="button" 的提交按钮(而不是type=submit),然后在我准备好时使用jQuery 提交表单。这解决了使用preventDefault()等的所有问题。

<input type="button" value="Submit It" id="get_info">

然后是 jQuery:

$('#get_info').click(function() {
    var url = $('#myHiddenField').val();
    alert(url);
    window.location.replace(url);
    $('#search-form').submit();
});

再说一次,我不确定你是否可以结合 submit()window.location.replace() 方法...*

【讨论】:

  • 这在小提琴中有效,但在我的网站上无效,我很困惑。我上传了网站here 试图弄清楚。
  • (1) 是否添加了隐藏的&lt;input&gt; 元素? (2) 您是否将该元素的 ID 与您的 jQuery 代码正确匹配以将 URL 数据存储在该元素中? (3) 使用谷歌浏览器 -- 更改选择选项后,在您希望找到隐藏输入元素的位置单击鼠标右键,然后从弹出窗口中选择Inspect Element -- 查看是否存储了正确的 URL。
  • 顺便说一句,我有另一个想法给你。除了在客户端使用window.location.replace(url),您可以将该url添加到表单中的隐藏元素中(也许只需在表单代码之间移动#myHiddenField,并将name="myHiddenField"属性添加到控件,以便发送形式)。然后,在 PHP 端,将该值放入变量中:$newLoc = $_POST['myHiddenField']; 并使用 PHP 将用户重定向到该新位置(在处理表单数据之后):echo '&lt;meta HTTP-EQUIV="REFRESH" content="0; url="' .$newloc. '"&gt;';
  • 我已修复它,以便存储正确的 url。如何更改它,以便 from 现在重定向到该值?如,我如何将 URL 设置为表单操作,以便在提交时重定向。
  • 这真是一个新问题。请关闭此问题(通过选择正确答案)并发布一个新问题,我(在许多其他问题中,我确信,因为新问题将出现在列表顶部)将很乐意提供帮助。还请记住对任何对您有帮助的答案进行投票。
【解决方案2】:

没有看到其余的代码,我可以建议如下:

$("#selectbox").on("change", function(){   
    window.location.replace(this.value); 
});

如果您使用的是 php,请将选项的值更改为 "?goto=0..1,2,3" 等并在 php 中重定向它们(我认为这是更好的选择)

编辑

更新小提琴http://jsfiddle.net/wS6EZ/3/

这是另一个解决方案:

html 中,在提交表单中添加隐藏字段。例如,我在小提琴中添加了 type=text。

<input type="hidden" id="redirect" value="NULL"/>

jquery

$("#selectbox").on("change", function(){
    $("#redirect").val(this.value);
});

php 中,添加这个,这几乎意味着:提交表单时重定向到隐藏字段值(我们用 jquery 更改)

if(!empty($_POST))
{
     header("Location: {$_POST["redirect"]}"); 
}

希望对你有帮助

【讨论】:

  • 确实可以,但是一旦选择了下拉选项,它就会更改页面,我希望它在按下提交按钮时更改重定向 url。
  • 你用的是php还是asp?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 2021-08-09
  • 2011-02-10
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多