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

Почему не попадает, когда с помощью SELECT сбрасывается форма?

Рассмотрим следующий HTML:

<form action="">
    <input />
    <select>
        <option>A</option>
        <option>B</option>
    </select>
    <input type="submit" />
</form>

Если фокус находится на input (текстовое поле), и я нажимаю enter, форма отправляется.

Но если фокус находится на select (раскрывающемся списке), и я нажимаю enter, ничего не происходит.

Я знаю, что я мог бы вычислить некоторый JavaScript, чтобы переопределить это, но я хочу знать, почему удар по вводу не просто работает?

Есть ли что-то, что я сломал бы, захватив ввод с помощью JavaScript (возможно, какая-то собственная доступность клавиатуры для выпадающего списка)?

4b9b3361

Ответ 1

Это просто характер контроля. Клавиша Enter (или щелчок мышью) делает выбор. Чтобы отправить форму при нажатии Enter, это приведет к плохой работе с пользователем, поскольку форма будет по существу непригодной для использования.

Я бы не рекомендовал менять поведение через JavaScript, просто потому, что поведение по умолчанию является нормой и что все ожидают.

(Представьте себе, каково было бы, если бы каждая форма была отправлена, когда вы сделали выбор в раскрывающемся списке. Например, посмотрите на Amazon.com, например, выберите категорию, затем введите поисковый запрос., нажав Enter, форма будет отправлена ​​до того, как будет введен запрос на поиск.)

Ответ 2

Тег select довольно забавный. Единственное, что делает клавиша Enter, - это щелкнуть раскрывающееся меню и использовать клавиши со стрелками, чтобы выбрать параметр, который вы можете нажать, чтобы закрыть раскрывающееся меню.

Что заставляет меня думать, что спецификация W3. не указывает, что должен делать ключ ввода, и каждый браузер делает это одинаково! Программисты браузера могли бы сделать одно из следующих.

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

  • Откройте раскрывающийся список, чтобы вы могли войти в него, видя все параметры.

  • Отправьте форму.

Но все решили не менять его... Что еще более удивительно, так это то, что я занимаюсь разработкой веб-сайтов уже 13 лет, и только сегодня я заметил это, когда у меня возникла ошибка в аналитике бизнес-аналитиков. они не смогли отправить форму, когда они попали внутрь! Напоминает мне о Tiny Pony.

http://www.w3.org/TR/html401/interact/forms.html