2013-07-05 288 views
142

對於我更重要的選擇,Select2中的搜索框非常棒。但是,在一個例子中,我選擇了4個硬編碼選項。在這種情況下,搜索框是多餘的,看起來有點傻。有可能以某種方式隱藏它?我在網上查看了文檔,在構造函數中找不到任何選項。select2 - 隱藏搜索框

我當然可以使用常規的html選項,但爲了保持一致性,我希望儘可能使用Select2。

+0

感謝您的想法。儘管我知道jQuery中的.show()和.hide(),但我並沒有想到,如果我在自己的選項之外做了類似的事情,插件將繼續工作。儘管如此,乍一看,它似乎工作:) – EleventyOne

+0

不客氣:) – CME64

+0

你能解釋一下隱藏方法是什麼以及它是如何工作的?你是否告訴我它只隱藏搜索框,因爲看起來並不是這樣 – IcedDante

回答

335

看到此線程https://github.com/ivaynberg/select2/issues/489,您可以通過將minimumResultsForSearch設置爲負值來隱藏搜索框。

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

在github上票據中提到的主要問題是在移動設備上它仍然顯示鍵盤。我們已經選擇了select2。 – toutpt

+2

,它可以完美地轉換成angular-ui ui-select2! – rhigdon

+0

非常方便的選項!我用它來顯示搜索10個以上的選項。無需手動刪除搜索輸入。 – blazkovicz

19

拆卸與jQuery的投入工作對我來說:

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

完美,在移動的鍵盤不顯示! –

+0

這適用於頁面上的所有下拉菜單,但我無法只針對特定的下拉菜單。由於它們不是select2 id的子項,因此無法定位。 –

+2

添加一個包裝來指定 – YAMM

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

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

+1我喜歡這個,因爲它可以防止在發出AJAX請求時在UI中短暫地出現搜索框。對於-1黑客來說也是如此。 – SimonGates

+0

這是問題的最佳答案,因爲它確實可以防止事件ui,例如「搜索....」。 –

+1

工作完美,謝謝!只要注意任何未來的Google員工,就需要select2完整版(select2.full。*),如以下所述:https:// github。com/select2/select2/issues/2879#issuecomment-149940634 – Othyn

1

如果選擇是顯示結果中的一個已使用此:

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

它關閉搜索結果然後將控件設置爲不可見

3

這是最好的解決方案,清潔和良好的工作:

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

然後,創建一個類.hidden { display;none; }

+0

這可能在過去運行良好,但不適用於最新版本select2的版本。 –

-2

你可以把.select2盒一個div,然後隱藏在div而非實際.select2框

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

0

@Misha科布林對我的回答工作做好所以我決定來解釋它更多

你想隱藏搜索框,你可以通過jQuery做到這一點。

例如,你已經初始化選擇2插件上的下拉ID爲觀衆

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

的示例工作在其上選擇2作品的所有設備。

1

我喜歡根據select中選項的數量動態地執行此操作;隱藏與10分或更少的結果選擇搜索,我做的:

$fewResults = $("select>option:nth-child(11)").closest("select"); 
$fewResults.select2(); 
$('select').not($fewResults).select2({ minimumResultsForSearch : -1 }); 
1
//readonly on all select2 input 
$(".select2-search input").prop("readonly", true); 
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); 
11

版本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>

0

我編輯的select2.min.js文件來設置系統產生於readonly="true"select-2__search輸入字段。

0

如果你想隱藏在初次打開,你是通過填充Ajax調用的下拉列表中,添加以下到AJAX塊在你選擇2聲明:

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