Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2011, 20:51
Аватар для kyivprogs
Интересующийся
Отправить личное сообщение для kyivprogs Посмотреть профиль Найти все сообщения от kyivprogs
 
Регистрация: 25.04.2011
Сообщений: 25

Табуляция в форме
Здравствуйте! Помогите решить алгоритм. есть форма:
<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 символов во второе поле курсор сразу переходил на третье. А если я удалил символы ис третего поля то чтоб курсор переходил на второе....
Я так понимаю задача состоит в установке фокуса и создания елементов масива полей ввода??? Или что то другое....
Заранее спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 12.10.2011, 22:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

// вернуть элемент по его 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>
Ответить с цитированием
  #3 (permalink)  
Старый 12.10.2011, 22:33
Аватар для kyivprogs
Интересующийся
Отправить личное сообщение для kyivprogs Посмотреть профиль Найти все сообщения от kyivprogs
 
Регистрация: 25.04.2011
Сообщений: 25

Спасибо, большое за решенный пример. А то я изучаю джава скрипт Библия пользувателя и понимаю что там не все написано... К примеру с var $ = function(a) впервые столкнулся... В библии про это не написано.... Огромное спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод выделенного текста в форме другого окна Mrjoey Events/DOM/Window 10 22.06.2011 22:31
расположение элементов в форме в разных местах mycoding ExtJS 8 04.10.2010 16:11
Результат вычислений в экспоненциальной форме Sharp Общие вопросы Javascript 19 02.04.2009 21:59
Добавление полей к форме deliro Общие вопросы Javascript 7 22.03.2009 15:20
Обращение к форме октрытого окна SparkDSD Events/DOM/Window 3 27.02.2009 14:02