2014-04-07 12 views
16

ho bisogno di attuare una selezione simile a questo http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/Select2 con un elenco casella di controllo per selezionare un multiplo

voglio usare Select2 per questo, ma non sono stato in grado di trovare qualsiasi cosa, da creatore del select2 quello sosterrebbe questo stile del menu a discesa con le caselle di controllo in esso. Qualcuno conosce un modo per farlo?

+3

Ciò interesse. https://davidstutz.github.io/bootstrap-multiselect/ – sepehr

risposta

12

Ho affrontato un bisogno simile ma non sono riuscito a trovarlo.

La soluzione che ho incontrato stava usando il closeOnSelect bandiera impostato su false

$("#yadayada").select2({closeOnSelect:false}); http://jsfiddle.net/jEADR/521/

+0

Molto bello, funziona bene per me! –

6

Sembra che questa è vecchio post, ma come è problema molto comune, `m questo distacco qui .

ho scoperto che l'autore già aggiunto un plugin per Select2 per questa caratteristica di avere selezione casella di controllo-like e la discesa non nasconde al clic:

https://github.com/wasikuss/select2-multi-checkboxes

Esempio:

$('.select2-multiple').select2MultiCheckboxes({ 
    placeholder: "Choose multiple elements", 
}) 

http://jsfiddle.net/wasikuss/gx93rwnk/

Tutte le altre funzionalità di select2 vengono mantenute. Ci sono poche altre opzioni predefinite impostate per funzionare correttamente.

0

Sono riuscito a mettere insieme qualcosa, non perfetto, ma funziona.

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"; 
} 
0

Un'altra soluzione è quella di icone casella di controllo "anteporre" usando i CSS. Uso il tema bootstrap - il tuo select2-container potrebbe essere diverso.

.select2-container--bootstrap .select2-results__option[aria-selected=true]:before { content:'\e067 '; padding:0 8px 0 0px; font-family:'Glyphicons Halflings' } 
.select2-container--bootstrap .select2-results__option:before { content:'\e157 '; padding:0 8px 0 0px; font-family:'Glyphicons Halflings' } 
1

aggiungere solo due emoji con i CSS

.select2-results__options { 
    &[aria-multiselectable=true] { 

     .select2-results__option { 
      &[aria-selected=true]:before { 
       content: '☑'; 
       padding: 0 0 0 4px; 
      } 

      &:before { 
       content: '◻'; 
       padding: 0 0 0 4px; 
      } 
     } 
    } 
} 

Vedete questo campione di RTL select2 con emoji casella di controllo basato RTL select2 with emoji based checboxes

Problemi correlati