2010-06-03 1 views
23

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

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

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

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

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

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

ответ

20

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

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

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

+2

Вы не совсем правы - больше в любом случае, вы, вероятно, были на проводке. Перейдите в Amazon сейчас, и вы можете выбрать категорию и выполнить поиск, нажав enter, не взаимодействуя с другими элементами формы. –

+0

Hitting enter не запускает поиск, фокусируя поле ввода текста, где вы можете ввести свой поисковый запрос или просто нажать Enter, не вводя слово. – sternAndy

+4

Это зависит от того, какой браузер вы используете. Например, ключ ввода не будет отправлять форму в Firefox, но будет отображаться в Google Chrome. –

10

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

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

Enter при фокусировке на закрытом раскрывающемся списке выберите бы:

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

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

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

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

Смежные вопросы