2010-09-03 56 views
5

這是我想要做的。每次select元素改變時我都想觸發一個事件。我有一個多行選擇,當我進行更改(單擊元素)時,它不會更改,直到選擇框失去焦點。所以我試圖在每次點擊選擇框時強制模糊。這樣如果它改變了,它會觸發改變的事件。如果它沒有改變,什麼都不會發生。如何強制在JavaScript中發生模糊事件?

我該怎麼做?我是否以正確的方式接近這個? jquery的答案也可以。

+1

如果你這樣做了,你將會搞砸那些使用鍵盤來瀏覽選擇列表選項的用戶。 – 2010-09-03 15:40:56

+1

@Roatin,這取決於。如果他正在改變一個標籤班,如果他正在拋出警報,則不會有太大的變化......) – Marc 2010-09-03 15:52:52

回答

1

好吧,這裏是發生了什麼事。我包括JQuery的-vsdoc版本,而不是實際的JQuery庫。這也解決了一些插件如blockUI的問題。

+0

爲了澄清,你不想包含-vsdoc。這應該只用於intellisense。 – 2010-09-03 16:12:49

1

您可以將一個onclick處理程序附加到select和個別選項。基本上是onclick="this.blur();"。我總是發現點擊事件<select>元素是一件痛苦的事情,因爲沒有任何事情發生在你期望的事情上。

3

使用jQuery做:

$('#mySelectBox').change(function() { 
    //do things here 
}); 

據當時http://api.jquery.com/change/的文檔,該事件被觸發時立即用戶進行選擇。

看看這個演示驗證工作的:http://jsfiddle.net/AHM8j/

+1

是的。這是OP應該聽取的事件。 – 2010-09-03 15:42:35

+0

這可能不會發生在IE中。 IE對於'change'事件非常不好。 http://stackoverflow.com/questions/1637503/jquery-change-event-on-select-not-firing-in-ie – 2010-09-03 15:45:00

+0

我提供的演示似乎是在IE 6-8中工作。此外,從提供的文檔中:「從jQuery 1.4開始,更改事件現在會出現泡泡,並且與Internet Explorer中所有其他瀏覽器的功能完全相同。」 – Ender 2010-09-03 15:57:00