2016-12-06 71 views
0

有一種簡單的方法讓用戶從SUBMIT上的下拉列表轉到URL,而不是onChange。下拉選擇表單,轉到URL上提交

我有這樣的代碼:

<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,但它不工作。

+0

一個選擇沒有提交甚至。提交事件與表單一起提交。 – Manish

回答

0

試試這個。

另外:你會想讓你的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!">

這是否對你的工作?

+1

像夢一樣工作!謝謝:) – Sam

+0

沒問題,樂於幫忙! :) – Andrew

0

您可以<form>元素上使用的onsubmit事件,但你要的preventDefault該事件,併爲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> 
+0

試過這個,但它會在我的當前URL的後面加上??菜單。即domain.com?menu=http%3A%2F%2Fdomain-one.com ..而不是直接轉到URL。 – Sam

+0

我已經更新了我的答案來解決這個問題 - 需要使用'return'關鍵字和preventDefault事件 – hackerrdave