【问题标题】:How to use javascript or jquery to get keyboard input when html drop down menu is show?显示html下拉菜单时如何使用javascript或jquery获取键盘输入?
【发布时间】:2019-10-17 00:30:01
【问题描述】:

我想在用户按下键盘时使用 javascript 或 jquery 获取输入。当下拉菜单不显示时是可能的。显示下拉菜单时,不会触发 onkeypress。

<html>
<body>
<select id="test" onkeypress="sayHello()">
<option value="1">1234</option>
<option value="5">5678</option>
</select>
</body>

<script>
function sayHello(){
    alert("Hello");
}
</script>
</html>

【问题讨论】:

    标签: javascript html select keyboard


    【解决方案1】:

    我认为默认的选择下拉菜单无法做到这一点,因为打开的下拉菜单是在浏览器窗口顶部创建的,实际上并不是文档的一部分。

    您可以使用/构建某种替换,在文档中呈现带有 html 元素的自定义下拉菜单,然后捕获您想要的所有事件。

    例如看看Select2。但是还有很多其他的库。

    这是一个使用 select2 的示例,仅在发生 keydown 事件且下拉菜单打开时发出警报:

    $(document).ready(function() {
      $('#example').select2({
        minimumResultsForSearch: 99
      });
      
      let isDropdownOpen = false;
      $('#example').on('select2:open', function(event) {
        isDropdownOpen = true;
      });
      $('#example').on('select2:close', function(event) {
        isDropdownOpen = false;
      });
      
      $(document).on('keydown', function(event) {
        if (isDropdownOpen) {
          event.preventDefault();
          alert('Hello!');
        }
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/css/select2.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/js/select2.min.js"></script>
    
    <select id="example" name="example">
      <option value="1234">1234</option>
      <option value="5678">5678</option>
    </select>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 2021-10-09
      • 2012-05-27
      • 2013-08-12
      相关资源
      最近更新 更多