2013-01-14 142 views
4

基本上我想要做的是有輸入充當一個顯示器,當點擊字段我希望有下拉搜索字段相同的單選擇。樣式select2多選與單選相同?

下面的(做得不好)模型可以比我更好地解釋這個。

enter image description here

不選擇二有此內置功能,還是有一個簡單的方法來做到這一點?

+0

這是一種很難搞清楚你在尋找什麼。在選擇的插件上選擇一個性別,這是否做你想要的? – Evan

+0

Select2是基於選擇的,看看[演示頁面](http://ivaynberg.github.com/select2/)瞭解單個選擇是如何工作的?現在看看多選,我喜歡多選的整個「標記」,但我不想輸入「標記輸入」,我想要一個搜索字段在下面顯示,就像它在單個選擇版本。 – Hailwood

+0

這裏有一個Select2加載的小提琴,如果有人想小提琴。 http://jsfiddle.net/isherwood/yJYpY/我認爲你必須破解S2核心才能實現這個工作。 – isherwood

回答

0

對於那些仍在尋找解決方案的人,請看看我的小提琴。

我用一對夫婦張貼了關於這個問題的小提琴,這一切組合到1

並不完美,但它的工作原理。

https://jsfiddle.net/Lkkm2L48/7/

jQuery(function($) { 
    $.fn.select2.amd.require([ 
    'select2/selection/single', 
    'select2/selection/placeholder', 
    'select2/selection/allowClear', 
    'select2/dropdown', 
    'select2/dropdown/search', 
    'select2/dropdown/attachBody', 
    'select2/utils' 
    ], function (SingleSelection, Placeholder, AllowClear, Dropdown, DropdownSearch, AttachBody, Utils) { 

     var SelectionAdapter = Utils.Decorate(
     SingleSelection, 
     Placeholder 
    ); 

    SelectionAdapter = Utils.Decorate(
     SelectionAdapter, 
     AllowClear 
    ); 

    var DropdownAdapter = Utils.Decorate(
     Utils.Decorate(
     Dropdown, 
     DropdownSearch 
    ), 
     AttachBody 
    ); 

     var base_element = $('.select2-multiple2') 
    $(base_element).select2({ 
     placeholder: 'Select multiple items', 
     selectionAdapter: SelectionAdapter, 
     dropdownAdapter: DropdownAdapter, 
     allowClear: true, 
     templateResult: function (data) { 

     if (!data.id) { return data.text; } 

     var $res = $('<div></div>'); 

     $res.text(data.text); 
     $res.addClass('wrap'); 

     return $res; 
     }, 
     templateSelection: function (data) { 
     if (!data.id) { return data.text; } 
     var selected = ($(base_element).val() || []).length; 
     var total = $('option', $(base_element)).length; 
     return "Selected " + selected + " of " + total; 
     } 
    }) 

    }); 

}); 

CSS:

.select2-results__option .wrap:before{ 
    font-family:fontAwesome; 
    color:#999; 
    content:"\f096"; 
    width:25px; 
    height:25px; 
    padding-right: 10px; 

} 
.select2-results__option[aria-selected=true] .wrap:before{ 
    content:"\f14a"; 
}