2015-08-27 1 views
1

Я использую select2 на своем веб-сайте. Пользователь может выбрать около 30 опций, когда все выбрано, оно выглядит немного неуклюжим и занимает много места.Показать 2 варианта, а затем «и x больше» (select2)

Итак, если выбрано более 3-х опций, я бы хотел, чтобы он отображал первые 3 варианта, а затем показывал «и x больше».

Есть ли способ сделать это?

+0

Пожалуйста, включите попытки решения, почему они не работают и ожидаемые результаты. Благодаря! –

+0

Честно говоря, я понятия не имею, что делать, я действительно не кодирую себя, я посмотрел варианты на странице github, но, похоже, не было никакого варианта для включения этого – ZebraFrugt

+0

Я не думаю что select2 имеет эту опцию. Но вы можете попробовать что-то вроде этого: http://jsfiddle.net/zA23k/215/. Возможно, корень вашей проблемы может быть UX. – Pablo

ответ

0

это было нужно для проекта, так что я просто работал над ним:

$("select").select2().on('change', function() { 
    var select = $(this); 
    var container = select.prev('.select2-container-multi').find('.select2-choices'); 
    var choices = container.find('.select2-search-choice'); 
    var val = select.val(); 
    var last = container.find('.select2-search-choice:last').clone(); 
    var lastVal = (!!val && val[val.length - 1].length > 30) ? val[val.length - 1].substring(0,30)+'...' : val[val.length - 1]; 
    if (val.length >= 2) { 
     container.find('.select2-search-choice').remove(); 
     last.find('div').text(lastVal + ' + ' + (val.length - 1)); 
     last.prependTo(container); 
     container.on('click', 'a', function(){ 
      container.find('.select2-search-choice').remove(); 
      select.val(''); 
     }); 
    } 
}); 

Примечание, что это основано на старой версии ВЫБ.2 плагина.

Смежные вопросы