1

我曾问过一个关于如何在 onfocus() 上打开 HTML 选择标签的选项列表的问题。那时它解决了我的问题,但我错过了一个问题,每次打开 html 选择选项时,onfocus下一个选择选项都会消失。

我找不到这段代码出了什么问题。这是那个有问题的问题 jsFiddle的链接。

4

2 回答 2

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/

于 2013-08-14T08:50:20.680 回答
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);            
 }); 
});

干杯!!

于 2013-08-14T08:52:14.133 回答