Select2 - скрытие окна поиска

Для моих более значимых выборов окно поиска в Select2 замечательно. Однако в одном случае у меня есть простой выбор из 4 жестко кодированных вариантов. В этом случае окно поиска является излишним и выглядит немного глупо. Можно ли как-то скрыть это? Я просмотрел документацию в Интернете и не смог найти никаких вариантов для этого в конструкторе.

Я мог бы, конечно, просто использовать регулярный выбор html, но для согласованности я бы хотел использовать Select2, если это возможно.

Ответ 1

Смотрите эту тему https://github.com/ivaynberg/select2/issues/489, вы можете скрыть окно поиска, установив для параметра minimumResultsForSearch отрицательное значение.

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

Ответ 3

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

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

Ответ 4

Версия 4.0.3

Попробуйте не смешивать требования пользовательского интерфейса с кодом JavaScript.

Скрыть окно поиска в разметке с помощью атрибута можно:

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

Разметка

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

Пример

$(document).ready(function() {
  $(".select2").select2();
});
<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>

Ответ 5

Удаление входов с jQuery работает для меня:

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

Ответ 6

Это лучшее решение, чистое и хорошо работающее:

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

Затем создайте класс .hidden { display;none; }

Ответ 7

Если вы хотите скрыть поиск определенного раскрывающегося списка, используйте для этого атрибут id.

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

Ответ 8

Если результат выбора показан, нужно использовать это:

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

он закрывает окно результатов поиска, а затем устанавливает контроль невидимым

Ответ 9

Мне нравится делать это динамически в зависимости от количества опций в select; чтобы скрыть поиск для выбора с 10 или менее результатами, я делаю:

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

Ответ 10

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

Ответ 11

//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);

Ответ 12

Если вы хотите скрыть при первоначальном открытии и заполняете раскрывающийся список с помощью вызова ajax, добавьте следующее в блок ajax в объявлении select2:

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

Чтобы затем показать его снова (и сосредоточиться) после того, как ваш ajax-запрос был успешным:

  success: function() {
      $('.select2-search--dropdown').removeClass('select2-search--hide'); // show search bar then focus
      $('.select2-search__field')[0].focus();
  }

Ответ 13

Если у вас есть несколько атрибутов в вашем выборе, этот грязный хак работает:

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

Ответ 14

@Миша Кобрин ответит хорошо для меня, поэтому я решил объяснить это подробнее

Вы хотите скрыть окно поиска, которое вы можете сделать с помощью jQuery.

например, вы инициализировали плагин select2 в раскрывающемся списке с аудиторией id

element_select = '#audience';// id or class
$(element_select).select2("close").parent().hide();

Пример работает на всех устройствах, на которых работает select2.

Ответ 15

Я отредактировал файл select2.min.js, чтобы установить поле ввода select-2__search, сгенерированное в readonly="true".

Ответ 16

Вы можете попробовать это

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

он закрывает окно результатов поиска и затем устанавливает контроль невидимым

Вы можете проверить здесь в документе select2 документы select2

Ответ 17

Для множественного выбора вы должны написать 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

Ответ 18

Вы можете поместить поле .select2 в div, а затем скрыть div, а не фактический поле .select2

$('#parentDiv').hide();
<div id="parentDiv">
  <select id="myHiddenField"></select>
</div>