2013-07-05 264 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'); }