2013-03-04 120 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