2013-03-04 172 views
2

這裏選擇標籤的這種行爲是我的問題:我怎樣才能改變IE

我有一個選擇標記有兩個選項 - 「你好」和「世界」

HTML

<select> 
<option> Hello </option> 
<option> World </option> 
</select> 

在IE中,當您選擇一個選項並且它變爲選定選項時,藍色突出顯示將保留,直到您在選擇標記之外的其他位置單擊。 (在Firefox中,它不是這樣)

所以我寫了一個腳本,當選擇一個選項時,從元素中移除焦點。

腳本

$('select').change(function() { 
     $(this).blur(); 

但還是一個小問題留下:如果我選擇你好,然後獲得您好選項 - 焦點仍將和藍色高亮顯示。但如果我選擇了你好,然後世界選項-everything工作.. 我讀到,對於選擇菜單,更改事件發生時,選擇一個選項!!!但該選項必須不同於以前選擇觸發更改事件。

即使再次選擇相同的選項,這種藍色突出顯示不會發生。

回答

5

您可以使用選擇選項點擊事件,假設選擇具有ID select

$('option').click(function() { 
    $('#select').blur(); 
}); 

DEMO:http://jsfiddle.net/DJCe7/

編輯

如果選項動態添加,然後做(假設選擇具有ID select :)

$('#select').on('click', 'option', function() { 
    $('#select').blur(); 
}); 

EDIT 2

獲得相同的結果按enter:

$('#select').keydown(function(event) { 
    // Enter pressed 
    if(event.keyCode == 13) { 
     $('select').blur(); 
    } 
}); 

DEMO:http://jsfiddle.net/DJCe7/10/

+0

西蒙thos reallu與我的第一個選項 - 這是默認的;但是什麼時候這些選項是動態添加的! – user1966221 2013-03-04 12:06:39

+0

你如何動態添加它們?只有選項或整個選擇框? – iappwebdev 2013-03-04 12:25:56

+0

我只能動態添加選項!!像這樣{ \t \t var optn = document.createElement(「OPTION」); \t \t optn.text = modtext; \t \t optn.value = value; \t \t optn.title = text; \t \t selectbox.options.add(optn); } – user1966221 2013-03-04 12:34:20

-1

如何模糊焦點?不知道這將如何在IE中表現。

$('select').focus(function() { 
    $(this).blur(); 
}); 

http://jsfiddle.net/b26f5/

編輯:我傻,你可能實際上只是刪除大綱與CSS。無需使用Javascript!

select, select:focus, select:active { outline: none; } 

http://jsfiddle.net/b26f5/1/

+0

爲什麼downvote?當然,CSS選項一定是最好的選擇!? – qwerty 2013-03-04 10:56:59

+0

JavaScript禁止在IE9和10中打開選擇框。 – 2013-03-04 10:58:55

+0

@MattCain是的,我想IE瀏覽器不會很好地處理它,因此我的CSS解決方案。如果目標是簡單地移除焦點樣式,那麼CSS解決方案將會很好。 – qwerty 2013-03-04 11:48:40