无法在 Select2 下拉输入搜索字段中输入 (http://kevin-brown.com/select2/)

Posted

技术标签:

【中文标题】无法在 Select2 下拉输入搜索字段中输入 (http://kevin-brown.com/select2/)【英文标题】:Can't type in Select2 dropdown input search field (http://kevin-brown.com/select2/) 【发布时间】:2018-03-14 17:13:46 【问题描述】:

我发现列出的许多问题都提到了相同的问题,但对我没有任何帮助 (https://www.google.com/search?q=can%27t+type+in+select2&ie=utf-8&oe=utf-8&client=firefox-b-ab)。我无法使用 jQuery 在模型对话框中输入 Select2 下拉输入搜索字段。顺便说一句,我可以从下拉列表中选择值。尝试插入 tabindex: 0 但没有运气。

代码:

$.ajax(
    type: "POST",
    url: "<?php echo $myScripts; ?>",
    data:  id1: "get-release-dropdown-html", id100: "<?php echo $dbTable; ?>" ,
    success:function(releaseDropdown)

        $('#progress').hide();

        $( "#modelDialog1" ).dialog(
            modal: true,
            width: '570',
            height: '600',
            resizable: true,
            position:
            
                my: "center",
                at: "center",
                of: window,
             ,
            title: "Trigger Build",
            open: function() 

                $(this).html("<br/>Please select job options.<br/><br/><br/><b>Release:</b>" + releaseDropdown + "<div style='margin-top:30px;'/><b>Build Release Candidate:</b><select id='sReleaseCandidate'><option value='ga' selected>GA</option><option value='beta1'>BETAX</option>'></br>");

                $("#sDescription").focus();

                $("#sRelease, #sReleaseCandidate").select2(
                    tags: true
                );
            ,

            close: function() 
                $( this ).dialog( "close" );

            ,

        );

    

);

【问题讨论】:

如果您在引导模式对话框中遇到此问题,请参阅此问题***.com/q/18487056/833732 【参考方案1】:

如https://github.com/select2/select2/issues/600#issuecomment-102857595所示

您需要将模态对话框元素指定为 select2 的父元素,这将确保即使您单击了选择元素,焦点仍保留在模态中

$("#sRelease, #sReleaseCandidate").select2(
    tags: true,
    dropdownParent: $("#modelDialog1")
);

【讨论】:

动态模型呢?我有这个带有位置的单独表格,整个系统在不同的部分使用它。 对于那些遇到问题但在不同位置重用模块的人,您可以将 dropdownParent 附加到封装 select2 的 div 上,然后它在您使用它的所有位置都能正常工作,无论是在模态还是页面中。 我一年多都无法解决这个问题,真的很有用!【参考方案2】:

如果您使用的是引导模式,那么只需从引导模式属性中删除 tabindex="-1"。就我而言,它工作得非常好。

【讨论】:

删除后应该使用Ctrl + F5,因为浏览器会缓存它。 救命!谢谢老兄! 你拯救了我的一天。谢谢老兄。【参考方案3】:

更新后我整整一周都在与这个问题作斗争。在一种情况下有效,在另一种情况下无效,要么是放置不当,要么无法控制。而且测试也不容易……

此时,似乎最好的方法就是选择下拉菜单的真正父级...select2 可以很容易地做到这一点。

$(".select2").each((_i, e) => 
  var $e = $(e);
  $e.select2(
    tags: true,
    dropdownParent: $e.parent()
  );
)

【讨论】:

这对我有用【参考方案4】:

我在使用react-bootstrap 时遇到了这个问题。通过将enforceFocus=false 添加到&lt;Modal /&gt; 元素来解决它。

【讨论】:

【参考方案5】:

从模态属性中删除 tabindex="-1" 并添加自定义样式="width: 100%;"正确对齐

【讨论】:

以上是关于无法在 Select2 下拉输入搜索字段中输入 (http://kevin-brown.com/select2/)的主要内容,如果未能解决你的问题,请参考以下文章

防止 select2 在打开下拉列表时自动聚焦其搜索输入

搜索时的Jquery select2自定义javascript函数

如何在使用 qrcode 扫描后将数据插入 select2 搜索输入

Select2 - 选项项中的自定义输入字段,防止点击事件

Select2 下拉菜单低于主下拉菜单

Select2 字段宽度难以调整大小