переход на другой элемент формы

dima333

Новичок
переход на другой элемент формы

В javascript я не силен поэтому вопрос возможно глуповат.

Есть форма в которой два поля ввода. Так вот как сделать так когда в первом поле мы впечатали 5 символов, нас перебрасывало на второе поле.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
1. вешаем на первое поле событие onchange
2. в событии проверяем длину данных, которые введены
3. при достижении искомой длины делаем focus на элемент номер два

Вроде так
 

dimagolov

Новичок
c0dex, а ничего, что onchange отрабатывает после потери фокуса?

тут есть два очевидных подхода, но оба не так просты и хороши, как кажется на первый взгляд. это onkeydown/onkeyup. но понимание того, что это плохо, приходит тогда, когда понимаешь, что не всякое нажатие кнопки дает один символ в input и не всегда символы там появляются после нажатия кнопок.

Есть замечательный атрибут у input, maxlength. Вот но железно ограничивает кол-во введенных символов.
А чтобы перекидывать фокус, я бы с частотой в 300-400мс по setInterval проверял бы кол-во введенных символов в input и при достижении предела делал бы focus следующему. ну и делать setInterval нужно по onfocus, снимать соответственно по onblur.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
dimagolov
Да, не знал про фокус. Лажа браузерная(
 

dimagolov

Новичок
c0dex, это не лажа, а документированное поведение. подумай сам, пока я набираю этот текст, по большому счету пофиг, что я набрал. я могу 10 раз стереть и написать по-новой. а вот когда фокус ушел, то тут как раз очевидно, я уже ЗАКОНЧИЛ ввод и можно анализировать, что там поменялось.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
dimagolov
это как раз лажа с точки зрения логики. событие называется onchange а срабытывает как onblur) И совершенно пофик сколько раз бы ты ввел-стер там данные, речь не об этом.
 

dimagolov

Новичок
ну это для input-а и textarea характерно. для того же select оно и без потери фокуса отработает после выбора.

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