HTML-форма. Запуск отправки формы с помощью клавиши ввода не работает, когда фокус находится в списке выбора.

Я застрял на вышеуказанной проблеме. У меня есть простая форма с текстовым вводом, списком выбора и кнопкой отправки. Когда фокус находится на вводе текста и я нажимаю Enter, форма отправляется. Если фокус находится в списке выбора, отправка не срабатывает. Я хочу, чтобы форма отправлялась независимо от того, какое поле имеет фокус.

<html>
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id='text1'/>
        <select>
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="mercedes">Mercedes</option>
            <option value="audi">Audi</option>
        </select>
        <input type='submit' onclick='alert("you submitted the form")'/>
    </div>
    </form>
</body>
</html>

person SWebbs    schedule 30.07.2010    source источник
comment
Ну, я никогда не видел другого поведения. Это стандартное поведение с элементами select. Вы можете нажать табулятор, а затем ввести. Не должно быть так сложно :)   -  person Fidi    schedule 30.07.2010


Ответы (2)


Это нормальное поведение браузера, чтобы выбрать опцию с помощью ввода.

Что вы можете сделать, так это прикрепить прослушиватель к событию keyDown элемента select и отправить форму, когда пользователь нажал клавишу ввода. Например. с jQuery:

$('#your-select').keydown(function(e){  
  if (e.keyCode == 13) {
      $('#your-form').submit();
    } });

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

person Karman Kertesz    schedule 30.07.2010
comment
+1 за последний комментарий. Это стандартное поведение браузера, оставьте его в покое. Пользователям клавиатуры необходимо нажать Enter, чтобы выбрать текущую опцию при использовании стрелок вверх/вниз в поле выбора. - person bobince; 30.07.2010
comment
да, это работает, но только если вы используете Enter для выбора значения. Итак... как мне проверить, расширен ли выбор (не говоря уже о стандартном поведении) и закрыт? - person SWebbs; 30.07.2010
comment
Убедил моего представителя пользователя, что это была плохая идея - person SWebbs; 19.08.2010

firefox делает это по умолчанию, т.е. вам нужен какой-то тип функции javascript, потому что IE связывает отправку при вводе только с входными данными.

person Tim    schedule 30.07.2010