如何捕获Enter键以进行选择2

时间:2019-03-07 06:45:52

标签: jquery jquery-select2

我有一个针对国家(多重选择)的select2下拉菜单。用户键入关键字时,它将在菜单中显示相关项目。
例如,如果用户键入 ind ,菜单将显示印度印度尼西亚。 如果按Enter键,则选择第一项( India )。这是默认行为。

现在,我想在用户键入 ind 并按Enter时同时选择两个国家/地区。

$(".select2-search__field").on("keyup",  function (e) { 
    console.log(e.keyCode);       
    if (e.keyCode == 13) {
        alert();
    }
});

使用上面的代码,控制台日志显示为 i n d ,而不显示 Enter键< / em>,因此警报永远不会显示。
我猜默认的select2行为是阻止我的代码被触发。

该怎么办,以便可以捕获Enter键。

https://jsfiddle.net/bwp0svq6/1/

2 个答案:

答案 0 :(得分:3)

已弃用keypress事件。您可能要改用keydown

$(document).ready(function() {
  $('#example').select2();

  $(".select2-search__field").on("keydown", function(e) {
    if (e.keyCode == 13) {
      alert();
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://rawgit.com/select2/select2/master/dist/js/select2.js"></script>
<link href="https://rawgit.com/select2/select2/master/dist/css/select2.min.css" rel="stylesheet" />

<select id="example" multiple="multiple" style="width: 300px">
  <option value="1">Argentina</option>
  <option value="2">Brazil</option>
  <option value="3">China</option>
  <option value="4">India</option>
  <option value="5">Indonesia</option>
</select>

答案 1 :(得分:0)

为什么不简单地使用此代码进行检查,因为可以单击鼠标即可:

   

$('#example').select2();

$("#example").on("click change keydown", function (e) { 
        var keycode = (event.keyCode ? event.keyCode : event.which);       
        if (keycode == 13) {
            console.log('inside')
        }
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="example" multiple="multiple" style="width: 300px">
    <option value="1">Argentina</option>
    <option value="2">Brazil</option>
    <option value="3">China</option>
    <option value="4">India</option>
    <option value="5">Indonesia</option>    
</select>

希望这会有所帮助。