【问题标题】:Dropdown Select Form, Go to URL On SUBMIT下拉选择表单,提交时转到 URL
【发布时间】:2016-12-06 00:41:35
【问题描述】:

有没有一种简单的方法让用户从 SUBMIT 的下拉列表中转到 URL,而不是 onChange。

我有这个代码:

<form name="cityselect">
<select name="menu" onChange="top.location.href=this.options[this.selectedIndex].value;" value="GO">
<option selected="selected">Select One</option>
<option value="http://www.domain-one.com">London</option>
<option value="http://www.domain-two.com">Glasgow</option>
</select>

尝试将 onChange 更改为 onSubmit,但不起作用。

【问题讨论】:

  • 一个选择甚至没有提交。提交事件与表单。

标签: javascript jquery html forms form-submit


【解决方案1】:

试试这个。

另外:您需要将 JavaScript 与 HTML 分开。不要使用onchange 或类似的 HTML 属性。虽然这在技术上没有错,但从代码质量/可维护性的角度来看却很糟糕。

var goBtn = document.getElementById("goBtn");
var menu = document.getElementById("menu");

goBtn.onclick = function() {
  window.location = menu.value;
}
<select id="menu">
  <option selected="selected">Select One</option>
  <option value="http://www.domain-one.com">London</option>
  <option value="http://www.domain-two.com">Glasgow</option>
</select>
<input type="button" id="goBtn" value="GO!">

这对你有用吗?

【讨论】:

  • 工作如梦!谢谢你:)
  • 没问题,很高兴为您提供帮助! :)
【解决方案2】:

您可以在&lt;form&gt; 元素上使用onsubmit 事件,但您需要在该事件上防止Default,对于onsubmit 事件,您需要使用return

<form name="cityselect" onsubmit="return redirectTo(this)">
  <select name="menu" value="GO">
    <option selected="selected">Select One</option>
    <option value="http://www.domain-one.com">London</option>
    <option value="http://www.domain-two.com">Glasgow</option>
  </select>
</form>

<script>
  function redirectTo(elem) {
    event.preventDefault();
    top.location.href = elem.firstElementChild.options[elem.firstElementChild.selectedIndex].value
  }
</script>

【讨论】:

  • 试过了,但它会将 URL 附加到我当前 URL 的末尾,并在其前面加上 ?menu。即 domain.com?menu=http%3A%2F%2Fdomain-one.com .. 而不是直接访问 URL。
  • 我已经更新了我的答案来解决这个问题 - 需要在事件中使用 return 关键字和 preventDefault
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 2015-06-26
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多