способ узнать, не соответствуют ли опции внутри выбора - в IE

В IE6 и, возможно, 7, если вы устанавливаете ширину для любого значения, отличного от auto, если параметры внутри этого выбора шире, чем ширина выбора, они обрезаются. это плохо. Firefox достаточно умен, чтобы этого не делать.

Вопрос: Как я могу узнать, отключаются ли опции с помощью javascript?

Как вы справились с этой проблемой, кроме установки ширины на авто?

Я имел дело с подобной проблемой @ stackoverflow.com/questions/1528828/…
s_hewitt 20.10.2009 19:29:27
2 ОТВЕТА
РЕШЕНИЕ

Хороший вопрос. Немного разглагольствования здесь, но реализация элементов <select>управления IE ужасна. У него есть следующие проблемы (среди прочего я уверен):

  • (Как вы заметили) установка ширины <select>обрезанных <option>элементов независимо от overflowинструкций
  • у них есть эта волшебная способность сидеть поверх всех других элементов управления на странице , независимо от положения и z-indexинструкций наслаивания ( ). Это была огромная PITA для ранних разработчиков «диалоговых» виджетов; любые выпадающие списки за диалогом будут перетекать поверх самого диалога.
  • вы не можете отключить отдельные <option>элементы
  • Вы не можете скрыть / показать отдельные <option>элементы
  • что <select>стили не отражает CSS , установленные на выбранном<option>
  • не может установить innerHTMLсвойство в строку новых элементов опций
  • если вы не установите valueатрибут для каждого <option>, mySelectBox.valueмолча
  • при использовании стрелок на клавиатуре для навигации по списку <option>элементов changeсобытие срабатывает при каждом нажатии клавиши (в Opera тоже есть эта проблема)
  • CSS-стили на <option>s и <optgroup>s обычно полностью игнорируются ( только backgound-colorи colorработают )
  • программно изменяющий список опций скрывает выпадающий список (это отстой для попыток реализации типа вперед, которые хотят, чтобы раскрывающийся список оставался видимым)
  • IE7 пытается разместить все параметры на экране при отображении. Для больших списков это означает, что раскрывающийся контент будет располагаться поверх раскрывающегося списка при отображении (это само по себе не является неправильным, но оно несовместимо с другими версиями IE)

Что касается вашей проблемы, одно решение для переключения widthна "auto"когда параметры отображаются, и установить , если вернуться к заданной ширины , когда опции закрыты, как описано здесь: http://css-tricks.com/select-cuts- офф-вариантов-в-т затруднительного /

Очевидный недостаток этого состоит в том, что винты увеличивают поток документа, поскольку все соседние элементы перемещаются вокруг, чтобы учитывать width:autoнастройку.

5
20.10.2009 19:17:49
Если вы думаете, что это отличный вопрос, вы можете оценить его +1
Robert Koritnik 13.10.2009 14:08:10
Спасибо за предоставленную мне всю дополнительную информацию, я не знал некоторые из этих вещей, и теперь я знаю =). Что касается этого решения css-tricks, то да, это отстой, потому что он сдвигает все вокруг, что кажется мне слишком уродливым
mkoryak 13.10.2009 14:59:19

Взгляните на этот пост Криса Койера.

1
13.10.2009 13:55:56