2010-12-16 152 views
3

可能重复:
How can you programmatically tell an HTML SELECT to drop down (for example, due to mouseover)?在jQuery中显示select下拉菜单?

是否有可能做一个选择元素的jQuery可见的下拉?

我试过使用$('#dropdown').click();,但它没有效果。

+0

也许关注,但我怀疑。 – RageZ 2010-12-16 03:02:22

+0

请参阅http://stackoverflow.com/questions/2800266/programmatically-open-a-drop-down-menu/2800276#2800276 – sje397 2010-12-16 03:04:14

+0

干杯,我没有尝试搜索,猜猜我没有使用正确的话......谢谢 – Hailwood 2010-12-16 03:07:10

回答

5

这是不可能的。你只能实现你自己的选择框,但这对可用性不利。

另一种方法是以编程方式更改选择框的大小属性,但这不是您真正想要的。

我建议思考为什么你需要这个,如果会有更好的软件模式?

+2

现在可能 - 只是fireEvent mousedown - 在这里解决:http://stackoverflow.com/questions/10453393/how-to-open-the-select- input-using-jquery – 2013-08-28 09:45:40

+1

只适用于我的Chrome。 IE8或FF没有工作;所以它仍然不可能以浏览器友好的方式。 – 321X 2013-09-03 09:02:44

3

这里是我的适应:

HTML

<button id='btn'>Click Me</button> 
<select id='test'> 
    <option>Blah 1</option> 
    <option>Blah 2</option> 
    <option>Blah 3</option> 
    <option>Blah 4</option> 
</select> 

的JavaScript

$('#btn').click(function(){ 
    $('#test').attr('size', 5); 
}); 

$('#test').change(function() { 
    $(this).attr('size', 1); 
}); 

这不打开下拉列表,但它种工作。

演示here

2

不 - 您无法做到这一点。它与用户点击时处于按下状态的按钮大致相同 - 用户设置值的“临时”操作。你可以focus,但这就是它。

如果你真的想模拟这个,你可以玩一些CSS。例如,您可以创建一个看起来像下拉列表的列表,并根据用户点击的内容设置下拉值 - 类似于自动完成列表的外观。

如果要将所有值显示给用户,可以随时将其更改为多行列表框。您可以通过将size设置为任何值并在要隐藏时回到1来完成此操作。它并不完美,但它是另一种选择:

$("#open").click(function(e){ 
    e.preventDefault(); 
    $("#myselect").attr("size",5);  
}); 

$("#myselect").click(function(){ 
    $(this).attr("size",1); 
}); 

http://jsfiddle.net/jonathon/cr25U/