2010-02-10 33 views
4

我正在使用javascript來模擬禁用的選擇元素。我無法真正禁用它,因爲.net驗證器失敗了,但那是另一回事。IE瀏覽器 - 防止在選擇框(如果它有一個特定的類)上的聚焦(點擊,雙擊)

我有以下功能:

function preventFocus(e) { 
    if ($(this).hasClass("disabled")) { 
    e.preventDefault(); 
    this.blur(); 
    } 
} 

即這裏所說的:

$("#ProvinceID").toggleClass("disabled").bind('focus click dblclick', preventFocus); 

雙擊在IE選擇框似乎仍然允許顯示和選擇的項目。我嘗試了IE開發者工具欄,e.type顯示爲focus和dblclick。這是一個IE錯誤,還是我需要趕上一些其他事件?我也試過focusin。

謝謝!

回答

0

我不知道它是否只是一個錯字,但你應該使用e.preventDefault();看起來你錯過了括號。

+0

Typo,yes;答案,不。不過謝謝。 – ScottE 2010-02-10 18:46:22

1

這4年遲,但我剛發現其實也有辦法讓IE≤8做什麼e.preventDefault()mousedown確實在其他瀏覽器(防止選擇防止聚焦):設置unselectable屬性! http://jsbin.com/yagekiji/1

注意與解決方法總是提示,它總是歸結爲setTimeout(function() { thingIDidntWantFocusStolenFrom.focus(); }),這樣可以防止焦點從以往由mousedown目標擺在首位被偷了!

有什麼好笑unselectable是,它是不能繼承的,所以它往往有利於selectstart事件的忽視(這些氣泡,e.preventDefault()上防止選擇,但防止焦點),或在每一個設置同一株樹遍歷後代元素(如the StackOverflow answer that first clued me in that this might be possible,或添唐氏seriesofnearlyidenticalanswers),但實際上你可以設置它在event.targetmousedown

(另外,jQuery ticket:http://bugs.jquery.com/ticket/10345

相關問題