2012-12-13 46 views
1

編輯: 我忘了http://在鏈接上。這不是我的問題。我會解決這個問題...選項選擇

我有一些選擇,如:

<select class="mySelect"> 
    <option value="http://www.url1.com">Url 1</option> <!--Default displayed---> 
    <option value="http://www.url2.com">Url 2</option> 
    <option value="http://www.url3.com">Url 3</option> 
</select> 

對此我有一個jQuery的傾聽者,看起來是這樣的:

$('.mySelect').change(function(){ 
    window.location.replace($(this).val()); 
}); 

由於這只是迴應所做的更改,我無法重定向到「www.url1.com」。我應該使用什麼?我只收到關於谷歌改變的建議。

編輯2:我有一堆關於使用虛擬作爲第一個選項的解決方案。我還得到了另一種使用按鈕來讀取選定的選項然後重定向的解決方案,但是在我正在開發的項目中不可用,即使這些解決方案真的是非常好的解決方案。

在這種情況下,我希望它聽用法,即使改變是爲了自己,就像我選擇第一個選項(默認情況下選擇的那樣),我希望它對它做些什麼 - 在在重定向之上的情況。如果有人能夠很好地解決這個問題,我會保持開放。

+9

您可以將一個虛擬選項作爲第一個選項,如「select url ..」 –

+0

是的,這是一個選項。但不是在我正在處理的實際情況中。 :) – gubbfett

回答

8

嘗試把一個空值一選項:

<select class="mySelect"> 
    <option value="">Please select...</option> 
    <option value="http://www.url1.com">Url 1</option> 
    <option value="http://www.url2.com">Url 2</option> 
    <option value="http://www.url3.com">Url 3</option> 
</select> 

然後,您可以修改您的jQuery重定向之前,爲了確保有一個值:

$('.mySelect').change(function(){ 
    var value = $(this).val(); 
    if (value != "") { 
     window.location.replace(value); 
    } 
}); 

Example fiddle

還要注意http://(或您使用的任何協議)是鏈接值所必需的。


更新

如果您希望不會有假的選項,你將需要改變的邏輯上的按鈕,點擊工作:

<select class="mySelect"> 
    <option value="http://www.url1.com">Url 1</option> 
    <option value="http://www.url2.com">Url 2</option> 
    <option value="http://www.url3.com">Url 3</option> 
</select> 
<button id="redirect">Go</button> 
$("#redirect").click(function() { 
    window.location.replace($(".mySelect").val()); 
}); 
+0

是的。抱歉。 http://在那裏。我在這個例子中忘了它;)我會試試看! – gubbfett

+0

在這種情況下,我不想要任何假人。否則這將是最好的事情,是的! – gubbfett

+0

在這種情況下,無法選擇第一個URL,因此無法執行'onchange'。另一種方法是在按鈕被點擊時有一個按鈕並重定向到選定的URL。 –

0

你有把http://

window.location.replace("http://"+$(this).val()); 
+0

不會傷害''http://',但並不能真正解決問題。 – jbabey

-1
<form> 
<select class="mySelect"> 
    <option value="" selected="selected">Please Select</option> 
    <option value="www.url1.com">Url 1</option> 
    <option value="www.url2.com">Url 2</option> 
    <option value="www.url3.com">Url 3</option> 
</select> 
</form>​ 

$(".mySelect").change(function() { 
var n = $(this).val(); 
if(n != "") { 
window.location.assign("http://"+n); 
} 
});​ 
+0

在這種情況下,我不想要任何假人。否則這將是最好的事情,是的! – gubbfett

+0

這到底是怎麼回事?男人,誰低估了我的答案? –

0

一個選項可以是你改變像

<select class="mySelect"> 
    <option value="select">Select URL</option> <!--Default displayed---> 
    <option value="www.url1.com">Url 1</option> 
    <option value="www.url2.com">Url 2</option> 
    <option value="www.url3.com">Url 3</option> 
    </select> 

第一個選項,也可以使用jQuery的單擊事件組合框。

+0

是啊,我想要做類似案例2的事情。但「點擊()」不會觸發組合框,至少不是在mac os上的chrome。 – gubbfett