在焦点上打开html选择选项

时间:2013-08-14 08:40:38

标签: javascript jquery html html-select

我问了一个关于How to open option list of HTML select tag on onfocus()的问题。当时它解决了我的问题,但我错过了一个问题,每次打开html选择选项onfocus下一个选择选项都消失了。

我无法找到此代码的错误。 这是有问题的问题jsFiddle的链接。

2 个答案:

答案 0 :(得分:4)

是的,这就是行

var x = "select[tabindex='" + (parseInt($(this).attr('tabindex'),10) + 1) + "']";
$(x).fadeTo(50,0);

做。它们隐藏了下一个选择,因为否则它将显示在扩展的选择之上。

但这根本不是一个好的解决方案。相反,我会使用z-index来防止这种情况发生:

$('select').focus(function(){
    $(this).attr("size",$(this).attr("expandto")).css('z-index',2);        
});
$('select').blur(function(){
    $(this).attr("size",1).css('z-index','1');         
});
$('select').change(function(){
    $(this).attr("size",1).css('z-index','1');
}); 

使用类而不是内联样式会更好。但我用它作为演示。

http://jsfiddle.net/PpTeF/1/

答案 1 :(得分:0)

只需注释掉fadeTo功能即可。检查此http://jsfiddle.net/PpTeF/2/

$(document).ready(function(){
 $('select').focus(function(){
    $(this).attr("size",$(this).attr("expandto"));
    var x = "select[tabindex='" + (parseInt($(this).attr('tabindex'),10) + 1) + "']";
    //$(x).fadeTo(50,0);
 });
 $('select').blur(function(){
    $(this).attr("size",1); 
    var x = "select[tabindex='" + (parseInt($(this).attr('tabindex'),10) + 1) + "']";       
    //$(x).fadeTo('fast',1.0);
 });
 $('select').change(function(){
    $(this).attr("size",1); 
    var x = "select[tabindex='" + (parseInt($(this).attr('tabindex'),10) + 1) + "']";       
    //$(x).fadeTo('fast',1.0);            
 }); 
});

干杯!!