select2 - 隐藏搜索框

时间:2013-07-05 01:49:40

标签: jquery jquery-select2

对于我更重要的选择,Select2中的搜索框非常棒。但是,在一个例子中,我有一个简单的4个硬编码选择。在这种情况下,搜索框是多余的,看起来有点傻。有可能以某种方式隐藏它吗?我在线查看了文档,但在构造函数中找不到任何选项。

当然,我可以使用常规的html选择,但为了保持一致性,我想尽可能使用Select2。

18 个答案:

答案 0 :(得分:415)

查看此帖子https://github.com/ivaynberg/select2/issues/489,您可以通过将minimumResultsForSearch设置为负值来隐藏搜索框。

$('select').select2({
    minimumResultsForSearch: -1
});

答案 1 :(得分:28)

.no-search .select2-search {
    display:none
}

$("#test").select2({
    dropdownCssClass : 'no-search'
}); 

答案 2 :(得分:28)

它位于他们的示例页面上:https://select2.org/searching#hiding-the-search-box

String key = "A_B_C_D";       // => [A, B, C, D]
//String key = "A_B_C_D_E_F"; // => [A_B, C, D, E, F]
String[] res = null;
if (key.split("_").length > 4) {
    res = key.split("(?<!^[^_]*)_");
} else {
    res = key.split("_");
}
System.out.println(Arrays.toString(res));

答案 3 :(得分:23)

版本4.0.3

尽量不要将用户界面要求与JavaScript代码混合在一起。

您可以使用以下属性隐藏标记中的搜索框:

data-minimum-results-for-search="Infinity"

<强>标记

<select class="select2" data-minimum-results-for-search="Infinity"></select>

示例

&#13;
&#13;
$(document).ready(function() {
  $(".select2").select2();
});
&#13;
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>

<label>without search box</label>
<select class="select2" data-width="100%" data-minimum-results-for-search="Infinity">
  <option>one</option>
  <option>two</option>
</select>

<label>with search box</label>
<select class="select2" data-width="100%">
  <option>one</option>
  <option>two</option>
</select>
&#13;
&#13;
&#13;

答案 4 :(得分:20)

使用jQuery删除输入对我有用:

$(".select2-search, .select2-focusser").remove();

答案 5 :(得分:3)

这是最好的解决方案,干净且工作正常:

$("#select2Id").select2 () ;
$("#select2Id").select2 ('container').find ('.select2-search').addClass ('hidden') ;

然后,创建一个类.hidden { display;none; }

答案 6 :(得分:3)

如果要隐藏特定下拉列表的搜索,请使用id属性。

...
return admin.database().ref('/fcmToken/' + userUid).once('value', snapshot => {
        const values = snapshot.val()
        const fcmToken = values.fcmToken

        var message = {
            notification: {
                body: 'New message(s)',
                sound: 'default'
            },

              token: fcmToken
            };

        return admin.messaging().send(message)
          .then((response) => {
            return console.log('Successfully sent message:', response);
          })
          .catch((error) => {
            return console.log('Error sending message:', error);
          });
    })

答案 7 :(得分:1)

//Disable a search on particular selector
$(".my_selector").select2({
    placeholder: "ÁREAS(todas)",
    tags: true,
    width:'100%',
    containerCssClass: "area_disable_search_input" // I add new class 
});

//readonly prop to selector class
$(".area_disable_search_input input").prop("readonly", true);

答案 8 :(得分:1)

如果您在选择中具有多重属性,则此肮脏的hack起作用:

var multipleSelect = $('select[name="list_type"]');
multipleSelect.select2();
multipleSelect.parent().find('.select2-search--inline').remove();
multipleSelect.on('change', function(){
    multipleSelect.parent().find('.select2-search--inline').remove();
});

在此处查看文档https://select2.org/searching#limiting-display-of-the-search-box-to-large-result-sets

答案 9 :(得分:1)

//readonly on all select2 input
$(".select2-search input").prop("readonly", true);

答案 10 :(得分:1)

我喜欢根据select中的选项数量动态执行此操作;为了隐藏搜索10个或更少结果的选择,我这样做:

$fewResults = $("select>option:nth-child(11)").closest("select");
$fewResults.select2();
$('select').not($fewResults).select2({ minimumResultsForSearch : -1 });

答案 11 :(得分:1)

如果选择是显示结果,则必须使用:

$('#yourSelect2ControlId').select2("close").parent().hide();

它会关闭搜索结果框,然后将控件设置为不可见

答案 12 :(得分:0)

我修改了select2.min.js文件,将select-2__search输入字段设置为readonly="true"

答案 13 :(得分:0)

如果您想在初始打开时隐藏并通过ajax调用填充下拉列表,请将以下内容添加到select2声明中的ajax块:

beforeSend: function () 
  {
    $('.select2-search--dropdown').addClass('hidden');
  }

答案 14 :(得分:0)

@Misha Kobrin的答案对我来说很有效所以我决定更多解释

你想隐藏你可以通过jQuery做的搜索框。

例如,您已在具有ID受众群体的下拉列表中初始化了select2插件

OpenChatsTableViewController

该示例适用于select2工作的所有设备。

答案 15 :(得分:0)

您可以尝试

$('#select_id').select2({ minimumResultsForSearch: -1 });

它关闭搜索结果框,然后将控件设置为不可见

您可以在select2文档select2 documents

中查看

答案 16 :(得分:0)

对于多选,您必须编写js代码,没有设置属性。

$('#js-example-basic-hide-search-multi').select2();

$('#js-example-basic-hide-search-multi').on('select2:opening select2:closing', function( event ) {
    var $searchfield = $(this).parent().find('.select2-search__field');
    $searchfield.prop('disabled', true);
});

此问题在他们的页面上提到:https://select2.org/searching#multi-select

答案 17 :(得分:0)

尝试此CSS

input[aria-controls=select2-product-type-results]{
  display: none;
}

此输入为搜索字段