Табуляция в форме
Здравствуйте! Помогите решить алгоритм. есть форма:
<form name="registr" id="registr"> <input type="text" name="key1" id="key1" maxlength="6"> <input type="text" name="key2" id="key2" maxlength="6"> <input type="text" name="key3" id="key3" maxlength="6"> <input type="submit" </form> как сделать так, что если при вводе 6 символов в первое поле курсор автоматически переводился во второе поле, если я ввел 6 символов во второе поле курсор сразу переходил на третье. А если я удалил символы ис третего поля то чтоб курсор переходил на второе.... Я так понимаю задача состоит в установке фокуса и создания елементов масива полей ввода??? Или что то другое.... Заранее спасибо |
по событию нажатия клавиши делаем ветвление, в котором решаем что делать - фокусить следующий элемент, если длина текущего равна максимальной, или фокусить предыдущий, если длина значения текущего равна нулю :
// вернуть элемент по его id. для укорочения кода
var $ = function(a) {return document.getElementById(a)},
// определение ie
ie = /*@cc_on!@*/0,
// максимальная длина
maxlength = 6,
//поля, по которым будет туда-сюда двигаться курсор
inputs = [$('key1'), $('key2'), $('key3')],
// на каком поле находится сейчас, в данный момент
curr = 0;
// onkeydown регистрирует нажатие клавиши даже, если вы её зажали и не отпускали
$("registr").onkeydown = function(e) {
// элемент, в который вводят текст
e = ie?event.srcElement:e.target;
// если ввели текст, равный ограничению
e.value.length==maxlength &&
// и мы можем передвигать указатель вперёд (вправо)
inputs[curr+1] &&
// то делаем это
inputs[ ++curr ].focus();
// если же длина достигла нуля
!e.value.length &&
// и мы можем двигаться назад (влево)
inputs[curr-1] &&
// то делаем это
inputs[ --curr ].focus();
}
демо
<form name="registr" id="registr">
<input type="text" name="key1" id="key1" maxlength="6">
<input type="text" name="key2" id="key2" maxlength="6">
<input type="text" name="key3" id="key3" maxlength="6">
</form>
<script>
var $ = function(a) {return document.getElementById(a)},
ie = /*@cc_on!@*/0,
maxlength = 6,
inputs = [$('key1'), $('key2'), $('key3')],
curr = 0;
$("registr").onkeydown = function(e) {
e = ie?event.srcElement:e.target;
e.value.length==maxlength &&
inputs[curr+1] &&
inputs[ ++curr ].focus();
!e.value.length &&
inputs[curr-1] &&
inputs[ --curr ].focus();
}
</script>
|
Спасибо, большое за решенный пример. А то я изучаю джава скрипт Библия пользувателя и понимаю что там не все написано... К примеру с var $ = function(a) впервые столкнулся... В библии про это не написано.... Огромное спасибо!
|
| Часовой пояс GMT +3, время: 07:53. |