?

Log in

No account? Create an account
 
 
01 Октябрь 2009 @ 16:42
.focus и форма  
Имеется форма, на ней некоторое количество полей input.
Хочется переход по формам по нажатию enter.
Т.е. при загрузке первый input ловит фокус, в него забиваются значения, по нажатию Enter фокус ловит следующий input и так далее.
Последний input - кнопка Submit.
 
 
 
Andrew Kulinich4vanger on Октябрь, 1, 2009 12:52 (UTC)
это будет чрезвычайно неудобно и неинтуитивно для пользователей - нажатие Enter это всегда сабмит формы и отправка данных - пользователи просто не догадаются что надо нажимать enter.
Но если очень хочется, но делается примерно так:
1) onfocus каждого поля формы запоминает в какую-то переменную, что именно это поле выбрано. На onblur очищать переменную.
2) на onsubmit формы вешается функция, которая вернёт true, если enter был нажат в последнем поле формы. Во всех остальных случаях - false.
Baton - BatonЫЧ_bublik_ on Октябрь, 1, 2009 13:10 (UTC)
Спасибо, понял.

Переводим систему со старой базы на Delphi, где это было реализовано в web. Внутренняя система, поэтому для них это будет привычно.
Baton - BatonЫЧ_bublik_ on Октябрь, 1, 2009 13:26 (UTC)
точнее, было на Delphi, реализуем в web
Mr. Spockkpobococ_ on Октябрь, 1, 2009 14:23 (UTC)
А не проще ли на каждый input вставить событие onkeypress с переходом на следующий инпут и остановкой последующих событий?
Andrew Kulinich4vanger on Октябрь, 1, 2009 14:29 (UTC)
Тоже можно. Но только не onkeypress, а onkeydown, чтобы избежать проблем с ИЕ.
Но мне мой вариант нравится больше - реже вызывается обработчик и не надо останавливать события, потому что это может поломать функционал других компонентов.
Andrew Kulinich4vanger on Октябрь, 1, 2009 14:35 (UTC)
но в одном ваше решение точно лучше - нажатие enter на SELECT не вызывает сабмита формы - а onkeydown словит.