Подтвердить что ты не робот

Select2 - Установка различной ширины для ввода и выпадающего меню

Я использую Select2 3.3.2

У меня очень очень длинные варианты в выборе. Пример:

<select id="e1">
<option value="AL">Alabama</option>
<option value="WY">Wyoming</option>
<option value="WY">very long long long text</option>
<option value="WY">very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long text</option>
</select>

Цель состоит в том, чтобы избежать обнуления параметров при открытии раскрывающегося списка.

Я хотел бы установить длинную ширину для раскрывающегося списка, когда он откроется (например, 800 пикселей или даже автоматическая оцененная ширина).

Но сохранить вход с короткой шириной, когда выпадающее меню закрыто (например, 300 пикселей).

Я следил за этим "Добавить параметр для установки ширины раскрывающегося списка" для select2.

Но я не мог заставить его работать, ширина опций/выпадающего списка такая же, как ширина ввода и параметры, связанные с несколькими строками.

Вот демонстрация моей проблемы в jsfiddle - http://jsfiddle.net/ewwAX/

Спасибо всем за помощь за помощь.

4b9b3361

Ответ 1

Используемое вами свойство не предназначено для управления шириной раскрывающегося списка. Вы можете использовать свойство dropdownCssClass.

Вот демо в jsFiddle.

JavaScript:

$(document).ready(function() { 
    $("#e1").select2({dropdownCssClass : 'bigdrop'}); 
});

CSS:

.bigdrop {
    width: 600px !important;
}

Обратите внимание, что для более свежих версий теперь есть лучшее решение! Смотрите ответ Дэйва Амфлетта

Ответ 2

Select2 включает параметр dropdownAutoWidth, который использует javascript, чтобы попытаться быть достаточно широким для раскрывающегося содержимого.

$('#whatever').select2({dropdownAutoWidth : true});

Это, по крайней мере, работает с Select2 3.4.3 - я не знаю, насколько раньше он был введен.

Ответ 3

$("#e1").select2({ width: '100%' });      

Попробуй это. Это установит ширину контейнера на 100%

Ответ 4

Даже лучшее решение. Использование:

$('#e1').select2({width: 'resolve'});

Ответ 5

Здесь, как сделать select2 шире только тогда, когда он открыт:

Если вы хотите, чтобы он расширялся вправо, добавьте этот css:

  .select2-container.select2-dropdown-open {
    width: 170%;
  }

если вы хотите, чтобы он разворачивался влево, добавьте это {

  .select2-container.select2-dropdown-open {
    width: 170%;
    margin-left: -70%;
  }

Ответ 6

Я использовал это, и он работал отлично, только что он повлияет на все select2

#select2-drop{
    width: 400px !important;
}