В HTML, что должно произойти с выбранным отключенным элементом option?

StackOverflow https://stackoverflow.com/questions/49790

Вопрос

В моем конкретном примере я имею дело с выпадающим списком, например:

<select name="foo" id="bar">
  <option disabled="disabled" selected="selected">Select an item:</option>
  <option>an item</option>
  <option>another item</option>
</select>

Конечно, это довольно бессмысленно, но мне интересно, определено ли какое-либо строгое поведение.Opera фактически отклоняет атрибут "выбранный" и выбирает следующий элемент в списке.Похоже, что все остальные браузеры разрешают это, и оно остается выбранным.

Обновить: Чтобы внести ясность, я особенно заинтересован в первоначальном отборе.Я имею дело с одним из таких раскрывающихся списков типа "Выбрать элемент:", и в этом случае первый вариант действительно является меткой, и происходит действие onchange().Это справедливо ну, "прогрессивно улучшается" в том смысле, что кнопка отправки присутствует и удаляется только с помощью JavaScript.Если бы опция "выбрать ..." была удалена, то все, что тогда должно было стать первым элементом, не было бы выбрано.Мы просто исключаем это onchange выпадающие списки вообще выпадают, или должна быть выбрана опция "выбрать ...", просто без эффекта?

Это было полезно?

Решение

В ответ на обновление в вопросе я бы сказал, что параметр 'label' следует выбирать, но либо заставить его ничего не делать при отправке, либо с помощью JavaScript не разрешать отправку формы без выбранного значения (при условии, что это обязательное поле).

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

Другие советы

Спецификации HTML немного расплывчаты (т.е.полностью отсутствует) в отношении этой странной комбинации.Они действительно говорят, что элемент формы с отключенным набором атрибутов не должен быть успешным, так что это действительно не могу быть избранным.

Браузер вполне может отрисовывать его так, чтобы он выглядел выделенным, но он не должен отображаться в опубликованных данных.Похоже, Opera поняла меня правильно.

Спецификации HTML укажите, что оба параметра, выбранный и отключенный, являются доступными для <option> элемент, но не указывает, что должно произойти в случае конфликта.В раздел, посвященный отключенным элементам управления в нем говорится

Если атрибут disabled установлен, он оказывает следующие эффекты на элемент:

  • Отключенные элементы управления не получают фокуса.
  • Отключенные элементы управления пропускаются при навигации по вкладкам.
  • Отключенные элементы управления не могут быть успешными.

в нем также говорится

Способ отображения отключенных элементов зависит от пользовательского агента.Например, некоторые пользовательские агенты "выделяют серым цветом" отключенные пункты меню, надписи кнопок и т.д.В этом примере элемент ВВОДА отключен.Следовательно, он не может получать вводимые пользователем данные, и его значение не будет отправлено вместе с формой.

Хотя этот конкретный случай не указан, мое прочтение этого говорит о том, что фактический рендеринг "выбранного" "отключенного" элемента остается за браузером.Пока пользователь не может выбрать его, он работает как стандартный.В нем говорится, что скрипт может воздействовать на элемент, поэтому Javascript может установить отключенную опцию как выбранную (или отключить выбранную опцию).Это не противоречит стандартам, но при отправке формы значение этого параметра не может быть выбранным значением.В этом случае список выбора (я полагаю) должен был бы иметь пустое значение.

В соответствии со спецификацией HTML 4.01, отключенный является стандартный атрибут для элемента option, но поведение, вероятно, неопределимо в зависимости от стандарта (прочитайте информацию об элементе select и элементах options.Вот часть, которая, я думаю, может пролить свет на причины, побудившие Opera к их внедрению:

Если атрибут disabled установлен, он оказывает на элемент следующие эффекты:
* Отключенные элементы управления не получают фокусировки.
* Отключенные элементы управления пропускаются при навигации по вкладкам.
* Отключенные элементы управления не могут быть успешными.

Таким образом, весьма вероятно, что это всего лишь одна из тех вещей, где спецификация достаточно расплывчата, чтобы допускать обе интерпретации.Это своего рода особенность, которая делает программирование для Интернета таким увлекательным и полезным.:P

Мы просто полностью исключаем выпадающие меню "onchange" или следует выбрать опцию "выбрать ...", просто без эффекта?

Выпадающие списки "onchange" не одобряются более одержимыми стандартами типами.

Обычно я бы проводил некоторую проверку на стороне клиента.Что-то вроде "Пожалуйста, выберите товар из выпадающего списка".т. е.

должна ли опция "выбрать ..." быть выбираемой, просто без эффекта?

Поэтому я просто ответил "Да" на ваш вопрос "А" или "Б".:/ Извините!

к сожалению, на самом деле не имеет значения, что должно произойти, потому что IE не поддерживает атрибут disabled в параметрах period.

http://webbugtrack.blogspot.com/2007/11/bug-293-cant-disable-options-in-ie.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top