Выбранный заполнитель данных не отображается полностью для списков

У меня есть список asp.net, и я использую jquery selected plugin. Значение data-placeholder, похоже, не всегда работает со списками. Например, см. Изображение:

enter image description here

Обратите внимание на поле списка Region, в котором говорится: "Выберите" Re ", затем он останавливается... его довольно случайный взгляд на список для города, который отлично работает. Но посмотрите на окно списка для страны, которое должно сказать Select Country..., но оно показывает Select Country.. (отсутствует последний период). Моя разметка asp.net управления списком как таковая:

<asp:ListBox ID="lbRegion" AutoPostBack="true" runat="server" class="chosen-select"
             data-placeholder="Select Region..." SelectionMode="Multiple"
             OnSelectedIndexChanged="lbRegion_OnSelectedIndexChanged" ToolTip="Select Region...">
</asp:ListBox>

Я попытался переиздать его и т.д., но безрезультатно. Что дает?

Здесь мой jquery, который включает выбранный класс:

$(".chosen-select").chosen({
            search_contains: true,
            no_results_text: "Oops, nothing found!",
            allow_single_deselect: true
        });
        $('.chosen-container').css('width', '200px');

Ответ 1

Я заметил, что каждому списку на странице присваивался класс default. Я не говорю, что это определенный ответ, но это обходное решение. Просто добавьте это в свой jquery:

$(".default").css("width", "175px");

Используйте ширину по своему вкусу, в этом случае я использовал 175px.

Ответ 2

Проблема о Select Country.., воспроизведенная здесь: http://jsfiddle.net/D3FUc/, я буду искать причину проблемы.

Единственное, что я нашел, это переопределить конкретный класс контейнера, например:

li.search-field {
    width: 100%;
}
li.search-field input.default {
    width: auto !important;
}

Проблема: https://github.com/harvesthq/chosen/issues/1162#issuecomment-30229366

Демо: http://jsfiddle.net/D3FUc/1/

Ответ 3

Настройка ширины явно в параметрах инициализации, по-видимому, устраняет проблему на пример Irvin:

$('.chosen-select').chosen({ width: '200px' });

мы сделали это, но использовали стиль css. - JonH

Я знаю.

Как бы то ни было, chosen вычисляет длину метки метки-заполнителя и назначает ее в разметке меток в атрибуте style.
Я не могу сказать, в какой точке внутреннего рендеринга эта длина вычисляется, но из того, что показывает тест:

  • Если у вас есть только правило css, длина для первого отображения неверна,
  • если вы передаете ширину как явный вариант, с другой стороны, длина верна.

Моя слепая догадка заключается в том, что ширина заготовки выбора читается в точке, где она еще не достигла своего окончательного значения - возможно, до того, как она была вставлена ​​в ее последнее место в DOM, и, следовательно, до применения правила css.

Ответ 4

Решение css меняет внешний вид окна выбора, поэтому я не хотел его использовать. Мне удалось обойти, вызвав следующее после отображения выбранного.

//to fix placeholder in chosen
$('select').trigger('chosen:updated')