select2-検索ボックスを隠す


206

私のより重要な選択については、Select2の検索ボックスはすばらしいです。ただし、1つの例では、4つのハードコードされた選択肢の単純な選択があります。この場合、検索ボックスは不必要で、少しばかげて存在しているように見えます。どういうわけかそれを隠すことは可能ですか?オンラインでドキュメントを調べましたが、コンストラクターでこれに関するオプションを見つけることができませんでした。

もちろん、通常のhtml selectを使用することもできますが、一貫性を保つために、可能であればSelect2を使用したいと思います。


アイデアをありがとう。私はjQueryの.show()と.hide()について知っていましたが、独自のオプション以外でそのようなことをしてもプラグインが機能し続けることはありませんでした。それにもかかわらず、一見、それは動作するようです:)
EleventyOne 2013

非表示メソッドの機能とその仕組みを説明できますか?検索ボックスが非表示になるのはまったくそうではないため、非表示になっていると言っていませんか
IcedD​​ante 2014年

@IcedD​​ante hideメソッドは次のとおりです:api.jquery.com/hide適切なセレクターにのみ適用する限り、はい、検索ボックスのみを非表示にする必要があります。それにもかかわらず、非表示にするために使用できるプラグイン固有の方法があります。代わりに使用することをお勧めします(以下を参照)。
EleventyOne 2015年

回答:


474

このスレッドhttps://github.com/ivaynberg/select2/issues/489を参照してください。minimumResultsForSearchを負の値に設定すると、検索ボックスを非表示にできます。

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

14
githubのチケットで言及されているここでの主な問題は、モバイルでもキーボードが表示されることです。select2をselectedに置き換えました。
toutpt 2013年

2
そして、それはangular-ui ui-select2に完全に変換されます!
rhigdon 2013年

とても便利なオプション!10以上のオプションの検索を表示するために使用しました。検索入力を手動で削除する必要はありません。
blazkovicz 2014

@KevinBrown Infinityは負の値ではありません。編集すると、テキストとコードが一致しなくなります。リンクされている問題は、負の値がサポートされている正しいアプローチであることを具体的に指摘しています。リンク先の問題は、「minimumResultsForSearchの高い値は開いた選択の検索ボックスを非表示にするだけです。しかし、選択が閉じてフォーカスされている間に文字を入力すると、検索がポップアップします」と主張し、その特定の問題を再現することはできませんが現在のバージョンでは、古いバージョンで実際に問題になる可能性があります。これらの理由により、私はあなたの編集をロールバックしました。

1
ただし、検索機能は完全に無効になります。
sudip


34
.no-search .select2-search {
    表示:なし
}

$( "#test")。select2({
    dropdownCssClass: '検索なし'
}); 

1
+1 AJAXリクエストが行われている間、UIに検索ボックスが一瞬表示されないようにするので、これが好きです。これは-1ハックにも当てはまります。
SimonGates 2014年

これは、「searching ...」などのイベントuiを実際に防ぐため、質問に対する間違いなく最良の回答です。
Sarin Suriyakoon 2015年

5
完璧に動作しました、ありがとうございます!将来の
select2

1
おかげで、それは私が探していたものです。検索ボックスが非表示でも、プログラムで呼び出したいときに検索機能を利用できるようにするためです。$( "#myselect")。select2( "search"、 "search_value")
nicolas

実際、これが最良の選択肢です。@Othynによると、フルバージョンが必要ですselect2.full.min.jsがウェブサイトに記載されています:select2.github.io
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 14

これはページ上のすべてのドロップダウンで機能しますが、特定のドロップダウンのみをターゲットにすることはできません。それらはselect2 IDの子ではないため、ターゲティングできません。
Shaun

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

これは、selectのオプションの数に応じて動的に行うのが好きです。結果が10以下のselectの検索を非表示にするには、次のようにします。

$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

あなたの選択に複数の属性がある場合、この汚いハックは機能します:

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#limited-display-of-the-search-box-to-large-result-sets


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


0

@ミシャコブリンの答えは私にとってうまくいくので、私はそれをもっと説明することにしました

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.