2014-01-24 43 views
1

我知道你可以在select上使用onchange事件來觸發JavaScript函數,但是如果他們選擇當前選中的選項呢?當用戶選擇HTML選擇中的當前選項時,是否可以觸發JavaScript?

原因是我想要一個網站的下拉列表。如果你願意,這可以用作一種跳躍。當用戶選擇一個站點時,所選站點將在新窗口中打開。現在,如果他們關閉新選項卡/窗口,則選擇是他們選擇的最後一個選項。如果用戶想再次訪問同一網站,那麼onchange事件不會觸發。

我知道,你可以用這樣的空值改變選擇選項恢復到默認選項:

HTML

<select onChange="jsFunction(this.value)" id="selectOpt"> 
    <option value="">1</option> 
    <option value="websiteURL2">2</option> 
    <option value="websiteURL3">3</option> 
</select> 

的JavaScript

function jsFunction(opt){ 
    window.location = opt; 
    document.getElementById("selectOpt").options[0].selected = true; 
} 

http://jsfiddle.net/XqLmY/1/

但我想知道如果沒有這個可以做到。

我可以使用HTML選擇而不更改其值來觸發事件嗎?

+4

你所描述的不應該使用''元素。您仍然可以對列表進行樣式設置,並使用javascript切換它的顯示方式。 – zzzzBov

回答

0

不是一個真正的答案,但我剛結束使用這種方法,因爲它很容易,並且沒有其他依賴關係。

function jsFunction(opt){ 
    window.location = opt; 
    document.getElementById("selectOpt").options[0].selected = true; 
} 
0

有關使用的onClick代替 看看這裏http://jsfiddle.net/9X4Ks/1/

<select onclick="clickFunction(this)" id="selectOpt"> 
    <option value="websiteURL1">1</option> 
    <option value="websiteURL2">2</option> 
    <option value="websiteURL3">3</option> 
</select> 

function clickFunction(o){ 
    alert(o.value) 
} 

什麼它觸發,即使用戶點擊所選擇的選項第二次。
不幸的是,它只適用於鉻和歌劇。 在Firefox中無法正常工作

+0

這會在每次單擊選擇時觸發事件,只允許我選擇當前選項;即使在Chrome中。 – Neil

相關問題