在 select2 中捕获输入键

Posted

技术标签:

【中文标题】在 select2 中捕获输入键【英文标题】:capturing enter key in select2 【发布时间】:2014-01-13 22:05:41 【问题描述】:

我正在使用select2 来呈现一个可编辑的选择框。当用户编写未出现在list(select2, data) 中的语句时,我会显示一个按钮以将此语句添加到列表中。

强迫用户点击按钮在我看来有点沮丧。是否可以在 select2 中捕获回车键?我想让用户只需按回车键就可以将他/她的新语句添加到列表中。

【问题讨论】:

【参考方案1】:
$('select2-search-field > input.select2-input').on('keyup', function(e) 
   if(e.keyCode === 13) 
      addToList($(this).val());
);

【讨论】:

对我来说,工作的选择器是'.select2-search > input.select2-input',在选择 3.4.5 Keyup 事件绑定到 select2 搜索输入在 IE11 上不起作用。 小警告,如果您在同一页面上有多个 select2,如果您在他们的搜索字段中按 Enter,他们现在都将尝试addToList($(this).val());。我认为 select2 4.0 可能会解决这个问题(与更好的选择器携手并进),但我仍然坚持 3.5 仍在尝试解决 Bootstrap 更改。 “所有这些”,是的,因为选择器仅基于类。如果您只想在一个 select2 实例上启用此行为,只需调用 $('#my-select2-instance').on...【参考方案2】:

我正在使用Select2 4.0.3,这对我有效:

$(document).on('keyup', '.select2-search__field', function (e) 
    if (e.which === 13) 
        alert('Pressed enter!');
    
);

【讨论】:

【参考方案3】:

我正在使用 Select2 4.0。这对我有用;

$('.select2-search__field').on('keyup', function (e) 
        if (e.keyCode === 13)
        
            alert('Enter key');
        
    );

【讨论】:

我正在使用 4.0.3,keyup 不再起作用。使用“输入”工作 我确认,使用“input”而不是“keyup”。就我而言,我想在更改 $('.select2-search__field') 的值后运行触发器,并使用以下代码解决:$('.select2-search__field').val('new_value').trigger('input');【参考方案4】:

这些在Select2 4.0.6-rc1 中都不起作用,但是这样做了:

$('#mySelect2').on('select2:select', function (e) 
    var data = e.params.data;
    console.log(data);
);

手册中有详细说明here。

【讨论】:

【参考方案5】:

此代码可以帮助您进行基于类的选择:

$('.select2-selection').on('keyup', function(e) 
    var YOUR_SELECT2_CUSTOM_CLASS = $(this).attr('aria-labelledby').includes('YOUR_SELECT2_CUSTOM_CLASS')
    if (YOUR_SELECT2_CUSTOM_CLASS && e.keyCode === 13) 
        alert($(".YOUR_SELECT2_CUSTOM_CLASS").val())
    
);

或者你可以使用这个:

$("YOUR_CUSTOM_CLASS").bind("change keypress", function() 
  if (window.event.keyCode === 13) 
    alert("Enter Captured")
  
)

【讨论】:

以上是关于在 select2 中捕获输入键的主要内容,如果未能解决你的问题,请参考以下文章

带有 Select2 未捕获异常的 FormValidation:未为 Select2 定义查询函数

未捕获的 TypeError: $(...).select2 不是 CodeIgniter 中的函数

Rails 6 + Webpacker:未捕获的类型错误:$(...).select2 不是函数

选择 select2 的 allowClear 选项时如何捕获事件?

未捕获的类型错误:jQuery(...).select2 不是 Laravel 5.3 的函数

如何将 Select2 默认的新标签键“tab”更改为“space”?