почему не нажимается ввод, когда SELECT сфокусирован, отправьте форму? - PullRequest
25 голосов
/ 03 июня 2010

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

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

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

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

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

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

Ответы [ 2 ]

21 голосов
/ 04 июня 2010

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

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

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

11 голосов
/ 24 сентября 2010

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

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

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

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

  2. Отправит форму.

Тем не менее, все решили не менять его ... Еще более удивительно то, что я проектировал веб-сайты 13 лет, и только сегодня я заметил это, когда получил исправление от бизнес-аналитиков, сказавшее они не могли отправить форму, когда нажали ввод! Напоминает мне о Крошечном Пони .

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

...