2013-08-20 104 views
1

我在我的HTML select元素:如何通过键盘激活select元素的下拉菜单?

<select id="dropdown"> 
    <option value="1">First</option> 
    <option value="2">Second</option> 
</select> 

它呈现为一个下拉菜单,当用户单击此,(!惊喜)落下。 为了仅通过键盘使用页面,我希望这样做的目的是当用户按下某个键时菜单下降。

$('body').keypress(function(event) { 
    var key = String.fromCharCode(event.which); 
    if (key == 'a') { 
     $('#dropdown').doSomething(); // ? 
    } 
}); 

我发现的最好的方法是调用focus()。它允许通过键盘选择值,但不会下拉菜单。有没有办法让菜单下降?

+0

不当然,如果这是可能的:http://stackoverflow.com/questions/360431/can-i-open-a-dropdownlist-using-jquery - 总是有其他线程尝试,但它似乎总是空虚。 – tymeJV

+1

AFAIK不可能。选择需要直接的用户交互。尽管你可以使用标准元素来伪造你的选择框 –

+2

可能的重复[你如何以编程方式告诉HTML SELECT下拉(例如,由于鼠标悬停)?](http://stackoverflow.com/questions/249192/how -can-you-programmatically-tell-an-html-select-to-drop-down-for-example-due)和http://stackoverflow.com/questions/430237/is-it-possible-to-use- js-to-open-an-html-select-to-show-its-option-list – j08691

回答

2

使用Chrome浏览器(28.0),你可以强制这样的鼠标事件:

var e = document.createEvent("MouseEvents"); 
e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
$("#dropdown").get(0).dispatchEvent(e); 

See this working demo不要忘记点击体压接前“a”到焦点赋予它

相关问题