Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переход между окнами ввода при заполнении. (https://javascript.ru/forum/misc/3096-perekhod-mezhdu-oknami-vvoda-pri-zapolnenii.html)

Бушка 18.03.2009 11:18

Переход между окнами ввода при заполнении.
 
Здравствуйте! Сразу скажу - поиск не использовал, т.к. не могу придумать слова, которыми это можно было найти =)

И так: есть четыре поля ввода (<INPUT>), два из которых MAXLENGTH=3, другие два - MAXLENGTH=2.
Они используются для ввода номера.
Хочется, чтобы при достижении в поле ввода определенного кол-ва символов, курсор перескакивал на соседнее. Я даже не знаю с чего начать.
После еще хочется чтобы, при нажатии на backspace, находясь в пустом инпуте, курсор бы попал на предыдущий.


Как я понимаю, необходимо событие которое смотрит после ввода сколько свободных в активном инпуте, это не сложно.
А вот перескочить курсором - тут я в затруднении.

Спасибо.

Kolyaj 18.03.2009 11:38

Цитата:

Сообщение от Бушка
А вот перескочить курсором - тут я в затруднении.

field.focus();

Бушка 25.03.2009 13:40

Спасибо.
Почти все уже.
Еще два вопроса: как в <INPUT> выделить весь текст, и как узнать какую именно кнопку нажали (интересует backspace).

Да, и как без jquery узнать MAXLENGTH у инпута...

Бушка 25.03.2009 14:01

Все нашел... не актуально )

Бушка 25.03.2009 15:40

Мои скромные познания в JS вылелись в вот это вот :)
Напомню - вводим тольцко цифры.
function autofocus(next,prev, e){
	evt = (e)? e: event;
	var elem = (evt.target) ? evt.target : evt.srcElement;
	var key = evt.keyCode;
	var limit = elem.maxLength;
	

	if(((key>=48) && (key<=57)) || ((key>=96) && (key<=105)) || (key==8) || (key>=37 && key<=40))
	{
		if(key==8 && prev)
		{
			if(elem.value.length==0)
			{
				elem.form.elements[prev].focus();
				elem.form.elements[prev].select();				
			}
		}
		if (((key>=48) && (key<=57)) || ((key>=96) && (key<=105)) && (elem.value.length==limit) && next)
		{
			elem.form.elements[next].focus();
			elem.form.elements[next].select();
		}
		
	}
	else
	{
		elem.value=parseInt(elem.value);
		if(isNaN(elem.value))
		{
			elem.value="";
		}
	}
}
Вот еще бы при возвращении коретку помещать в конец инпута, вместо выделения всего текста.


Часовой пояс GMT +3, время: 01:40.