Select2关闭事件触发后的聚焦输入

Focusing Input after Select2 close event fire

本文关键字:聚焦 输入 事件 Select2      更新时间:2023-09-26

I read always trigger"改变"-<选择>,即使点击的select2选项已经被选中,由于问题与我的问题非常接近,我在那里问了我的问题,但没有提供答案。我的问题是,我有一个由Select2构建的选择框和一个文本输入。我想要实现的是在Select2关闭之后(无论值是否更改(,我的文本输入变成焦点

所以我做了一些逻辑上很好的事情如下:

$('#select').select2({placeholder: 'City'});
$('#select')
.on('select2-close', function (e) {
   $('#hey').focus();
});

http://jsfiddle.net/sobhanattar/x49F2/8/

正如您所看到的,文本输入不接受焦点。在Select2文档中进行了一些挖掘并检查了文档中的Events部分之后,我意识到在Close事件之后,会自动触发Focus事件。这意味着关闭Select2选择框后,它会自动聚焦。所以我把代码改成这样:

$('#select').select2({placeholder: 'City'});
$('#select')
.on('select2-close', function (e) {
       $('#select').blur();
})
.on('select2-blur', function(e) {
      $('#hey').focus();
});

而且效果很好。现在我想知道我从Select2事件顺序的理解是正确的,或者我错过了在中间的东西。

看看这里,这个问题已经有了答案:关闭后模糊选择2输入

.on("select2-close", function () {
    setTimeout(function() {
        $('.select2-container-active').removeClass('select2-container-active');
        $(':focus').blur();
        $("#elementid").focus();
    }, 1);
});

elementid是在select2 closese之后要聚焦的id元素。我刚刚在链接的答案中添加了$("#elementid").focus();

试试这个:

$('#select2').on('select2:close', function (e)
{
   // your focus code for element
});

使用css:

html, body {
    height:100%
}