Select2 搜索输入在打开时未获得焦点

Posted

技术标签:

【中文标题】Select2 搜索输入在打开时未获得焦点【英文标题】:Select2 search input does not receive focus upon opening 【发布时间】:2018-09-20 20:11:32 【问题描述】:

我遇到了 select2 下拉菜单在打开时保持焦点的问题。

基本上,当您单击带有 select2 的下拉菜单时,会显示一个特殊的 select2 下拉菜单,顶部有一个文本输入,因此您可以开始输入并缩小您的选择选项。好吧,当 select2 下拉菜单打开时,焦点不在搜索输入中。它仍然在原来的 select html 元素上。

这是 CodePen 上的一个 WORKING select2 下拉菜单,仅作为示例。我无法复制我在 CodePen 中遇到的问题,所以它让我认为它在我的网站上存在冲突。但我不知道是什么,我似乎无法缩小范围。

https://codepen.io/anon/pen/QmoGew

see codepen for sample working code

我可以看到焦点在打开时进入搜索输入,但它立即消失了。有谁知道为什么会发生这种情况?

这是我的 package.json 文件中的依赖项:

"devDependencies": 
    "axios": "^0.17",
    "bootstrap": "^4.0.0",
    "browser-sync": "^2.23.6",
    "browser-sync-webpack-plugin": "^2.2.2",
    "cross-env": "^5.1.4",
    "jquery": "^3.2",
    "laravel-mix": "^2.1.11",
    "lodash": "^4.17.4",
    "vue": "^2.5.16",
    "vue-resource": "^0.9.3",
    "vue-router": "^2.6.0",
    "vuex": "^2.5.0",
    "webpack": "^3.10.0"
,
"dependencies": 
    "dropzone": "^5.4.0",
    "mini-toastr": "^0.7.2",
    "popper.js": "^1.14.3",
    "sweetalert": "^2.1.0",
    "vue-notifications": "^0.9.0",
    "select2": "^4.0.6-rc.1"

这就是我在 webpack.mix.js 中编译所有内容的方式

mix.browserSync('127.0.0.1:8000')
    .js('resources/assets/js/app.js', 'public/js')
    .sass('resources/assets/sass/app.scss', 'public/css')
    .styles([
        'node_modules/bootstrap/css/bootstrap.min.css',
        'node_modules/dropzone/dist/min/dropzone.min.css',
        'node_modules/select2/dist/css/select2.min.css'
    ], 'public/css/libs.css')
    .sourceMaps()
    .version();

mix.combine([
    'node_modules/jquery/dist/jquery.min.js',
    'node_modules/sweetalert/dist/sweetalert.min.js',
    'node_modules/dropzone/dist/min/dropzone.min.js',
    'node_modules/select2/dist/js/select2.full.min.js'
], 'public/js/app.js')
.sourceMaps();

【问题讨论】:

也许你想在这里发布你是如何实现你的代码的,包括其他脚本。可能与您拥有的其他 javascript 存在冲突。 好的,我更新了帖子以包含我的 package.json 和我的 webpack 配置。 正如我在您的 codepen 和您的 webpack 中看到的,它们不是同一个版本,您是否测试了 codepen 中的版本?也许不使用完整的,而是仅使用 select2.min.js 【参考方案1】:
$('#element_id').select2('open');

应该做的伎俩!

【讨论】:

那没有成功。 :( 我尝试了你的建议,但我仍然遇到同样的问题。谢谢你的帮助。还有其他想法吗? 我认为您遇到了某种浏览器问题,因为我打开了您的 codepen 示例并打开了选择输入,每次搜索输入成为焦点并且它根本没有消失。

以上是关于Select2 搜索输入在打开时未获得焦点的主要内容,如果未能解决你的问题,请参考以下文章

HTML:如何使一个网页打开时,第一个输入框自动获得焦点?

SQL Server 报告服务:如何在打开时停止报告触发

可以在打开时截取 <select> 的屏幕截图

如何在打开时仅在模式弹出窗口内限制 Tab 键按下?

如何在打开时更新 NSMenu?

Select2 在焦点文本输入上打开下拉菜单