select2-검색 창 숨기기


206

더 중요한 선택의 경우 Select2의 검색 상자가 훌륭합니다. 그러나, 하나의 경우, 4 가지 하드 코딩 된 선택 중에서 간단하게 선택할 수 있습니다. 이 경우 검색 창은 불필요한 것이며 약간 어리석은 것처럼 보입니다. 어떻게 든 숨길 수 있습니까? 온라인 설명서를 살펴 보았으며 생성자에서 이에 대한 옵션을 찾을 수 없습니다.

물론 일반 html select를 사용할 수는 있지만 일관성을 위해 가능한 경우 Select2를 사용하고 싶습니다.


아이디어 주셔서 감사합니다. jQuery에서 .show () 및 .hide ()에 대해 알고 있었지만 자체 옵션 외부에서 이와 비슷한 작업을 수행하면 플러그인이 계속 작동하는 것은 아닙니다. 그럼에도 불구하고, 언뜻보기에는 작동하는 것 같습니다 :)
EleventyOne

hide 메소드의 기능과 작동 방식을 설명 할 수 있습니까? 검색 상자 만 숨겨져 있다고합니까? 전혀 그렇지 않은 것 같습니다
IcedDante

@IcedDante hide방법은 여기에 설명되어 있습니다 : api.jquery.com/hide 적절한 선택자에만 적용하는 한, 검색 창만 숨겨야합니다. 그럼에도 불구하고 그것을 숨기기 위해 사용할 수있는 플러그인 특정 방법이 있습니다. 대신 사용하는 것이 좋습니다 (아래 참조).
EleventyOne

답변:


474

이 스레드 https://github.com/ivaynberg/select2/issues/489를 참조하십시오 . minimumResultsForSearch를 음수 값으로 설정하여 검색 상자를 숨길 수 있습니다.

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

14
github의 티켓에 언급 된 주요 문제는 모바일에서 여전히 키보드를 표시합니다. select2를 선택된 것으로 교체했습니다.
선전

2
그리고 그것은 angular-ui ui-select2로 완벽하게 번역됩니다!
rhigdon

매우 편리한 옵션! 10 개 이상의 옵션에 대한 검색을 표시하는 데 사용했습니다. 검색 입력을 수동으로 제거 할 필요가 없습니다.
blazkovicz

@KevinBrown Infinity은 음수 값이 아닙니다. 편집하면 텍스트와 코드가 일치하지 않습니다. 특히 연결된 문제는 음수 값이 올바른 지원 접근 방식임을 나타냅니다. "최소값의 minimumResultsForSearch는 열린 선택에서 검색 창만 숨 깁니다. 그러나 select가 닫히고 초점이 맞춰진 상태에서 일부 문자를 입력하면 아무리 높더라도 검색 팝업이 나타납니다." 현재 버전에서는 이전 버전에서 실제로 문제가 될 수 있습니다. 이러한 이유로 편집 내용을 롤백했습니다.

1
그러나 검색 기능을 완전히 비활성화합니다.
sudip 2019


34
.no-search .select2-search {
    디스플레이 : 없음
}

$ ( "# test"). select2 ({
    dropdownCssClass : '검색 안함'
}); 

1
+1 AJAX 요청이있을 때 UI에 검색 창이 잠깐 나타나지 않도록하기 때문에이 기능이 마음에 듭니다. 이것은 -1 핵에도 적용됩니다.
SimonGates

이것은 "searching ...."과 같은 이벤트 ui를 실제로 방지하기 때문에 질문에 대한 최선의 대답입니다.
Sarin Suriyakoon 2016 년

5
완벽하게 작동했습니다, 감사합니다! 미래 Google 직원들에게만 참고할 수 있도록 여기에 명시된대로 github.com/select2/select2/issues/2879#issuecomment-149940634
Othyn

1
감사합니다. 검색 창이 숨겨져 있어도 프로그래밍 방식으로 호출 할 때 검색 기능을 사용할 수 있습니다. $ ( "# myselect"). select2 ( "search", "search_value")
nicolas

실제로 이것이 최선의 선택입니다. @Othyn에 따르면 정식 버전이 필요하다고 웹 사이트에 설명 된대로 select2.full.min.js
robbpriestley

26

버전 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>


20

jQuery로 입력을 제거하면 효과가 있습니다.

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

완벽한 키보드는 표시되지 않습니다!
Pieter Meiresone

페이지의 모든 드롭 다운에서 작동하지만 특정 드롭 다운 만 타겟팅 할 수는 없습니다. 그들이 select2 id의 자식이 아니므로 타겟팅 할 수 없습니다.
Shaun Lebron

2
지정할 래퍼 추가
YAMM

3

이것은 최선의 해결책이며 깨끗하고 잘 작동합니다.

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

그런 다음 클래스를 만듭니다 .hidden { display;none; }


이것은 과거에는 잘 작동했지만 select2의 최신 버전에서는 작동하지 않습니다.
Matt Browne

3

특정 드롭 다운에 대한 검색을 숨기려면 id 속성을 사용하십시오.

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

1

선택 결과가 표시되면 다음을 사용해야합니다.

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

검색 결과 상자를 닫고 컨트롤을 보이지 않게 설정합니다.


1

선택의 옵션 수에 따라 동적으로 수행하고 싶습니다. 10 개 이하의 결과가있는 선택에 대한 검색을 숨기려면 다음을 수행하십시오.

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

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



1

처음 열 때 숨기고 ajax 호출을 통해 드롭 다운을 채우려면 select2 선언의 ajax 블록에 다음을 추가하십시오.

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();
  }

1

당신은 이것을 시도 할 수 있습니다

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

검색 결과 상자를 닫고 컨트롤을 보이지 않게 설정합니다.

select2 문서에서 확인할 수 있습니다. select2 문서


0

@Misha Kobrin의 답변이 나를 위해 잘 작동하므로 더 설명하기로 결정했습니다.

jQuery로 검색 창을 숨기려고합니다.

예를 들어 id 잠재 고객이있는 드롭 다운에서 select2 플러그인을 초기화했습니다.

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

이 예는 select2가 작동하는 모든 장치에서 작동합니다.


0

생성 된 입력 필드를 select2.min.js로 설정하기 위해 파일을 편집 select-2__search했습니다 readonly="true".


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


0

이 CSS를보십시오

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

이 입력은 검색 필드입니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.