Почему не попадает, когда с помощью SELECT сбрасывается форма?
Рассмотрим следующий HTML:
<form action="">
<input />
<select>
<option>A</option>
<option>B</option>
</select>
<input type="submit" />
</form>
Если фокус находится на input
(текстовое поле), и я нажимаю enter, форма отправляется.
Но если фокус находится на select
(раскрывающемся списке), и я нажимаю enter, ничего не происходит.
Я знаю, что я мог бы вычислить некоторый JavaScript, чтобы переопределить это, но я хочу знать, почему удар по вводу не просто работает?
Есть ли что-то, что я сломал бы, захватив ввод с помощью JavaScript (возможно, какая-то собственная доступность клавиатуры для выпадающего списка)?
Ответы
Ответ 1
Это просто характер контроля. Клавиша Enter (или щелчок мышью) делает выбор. Чтобы отправить форму при нажатии Enter, это приведет к плохой работе с пользователем, поскольку форма будет по существу непригодной для использования.
Я бы не рекомендовал менять поведение через JavaScript, просто потому, что поведение по умолчанию является нормой и что все ожидают.
(Представьте себе, каково было бы, если бы каждая форма была отправлена, когда вы сделали выбор в раскрывающемся списке. Например, посмотрите на Amazon.com, например, выберите категорию, затем введите поисковый запрос., нажав Enter, форма будет отправлена до того, как будет введен запрос на поиск.)
Ответ 2
Тег select довольно забавный. Единственное, что делает клавиша Enter, - это щелкнуть раскрывающееся меню и использовать клавиши со стрелками, чтобы выбрать параметр, который вы можете нажать, чтобы закрыть раскрывающееся меню.
Что заставляет меня думать, что спецификация W3. не указывает, что должен делать ключ ввода, и каждый браузер делает это одинаково! Программисты браузера могли бы сделать одно из следующих.
Введите, если сфокусировано на закрытом выпадающем меню, выберите:
Но все решили не менять его... Что еще более удивительно, так это то, что я занимаюсь разработкой веб-сайтов уже 13 лет, и только сегодня я заметил это, когда у меня возникла ошибка в аналитике бизнес-аналитиков. они не смогли отправить форму, когда они попали внутрь! Напоминает мне о Tiny Pony.
http://www.w3.org/TR/html401/interact/forms.html