Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个JavaScript;选择“显示框”;事件还是类似的?(使用jQuery)_Javascript_Jquery_Html Select - Fatal编程技术网

是否有一个JavaScript;选择“显示框”;事件还是类似的?(使用jQuery)

是否有一个JavaScript;选择“显示框”;事件还是类似的?(使用jQuery),javascript,jquery,html-select,Javascript,Jquery,Html Select,我有一个html选择: <select> <option>Choose one</option> </select> 实际上是这样。它甚至适用于他们键入字母的情况(它填充列表,然后跳转到以该字母开头的第一个选项)。但正如我所说,这有点令人憎恶。仅仅检查“tab”作为一个异常也是有点麻烦的——肯定还有其他的异常不会导致select被显示 是否有一个简单的事件覆盖了这个用例(或者至少有一些不那么令人讨厌的事件覆盖了它) (注意:我知道有其他方

我有一个html选择:

<select>
    <option>Choose one</option>
</select>
实际上是这样。它甚至适用于他们键入字母的情况(它填充列表,然后跳转到以该字母开头的第一个选项)。但正如我所说,这有点令人憎恶。仅仅检查“tab”作为一个异常也是有点麻烦的——肯定还有其他的异常不会导致select被显示

是否有一个简单的事件覆盖了这个用例(或者至少有一些不那么令人讨厌的事件覆盖了它)


(注意:我知道有其他方法可以构建这样的系统——例如,在选项发生变化时提前填充选项,而不是在选择显示上;但我不是在寻找其他建议,只是想知道是否有明确提出的问题的解决方案).

我不确定您打算支持哪些浏览器,但在您走得太远之前,请注意,如果您更改选择列表的内容(例如添加/更改/删除选项),IE将实际吞下(鼠标单击或聚焦)事件,该事件将打开列表,并给用户留下一个关闭的选择列表。详情请参见此处:


我想如果你真的觉得延迟加载会有好处。。。我会在初始加载时隐藏/禁用选择列表,并在呈现后触发选项的异步加载。。。当选择就绪时,重新启用/显示它。

听起来好像您正在寻找一个事件,该事件在选择展开之前刚刚触发,但足够早,您可以正确更改项目列表?Tab Enter不会显示选项。绑定到mousedown就足够了。
var select_reveal = function(ev) { ... }
$('select').on('mousedown', select_reveal).on('keydown', function(ev) {
    // character code 9 is tab
    if (ev.which !== 9) select_reveal.bind(this)(ev);
});