2013-03-01 3 views
2

Я хочу проверить длину значения ввода и автоматически перейти к следующему, когда достигнут 3. У меня есть код для пропуска, но то, как KeyUp события выстраиваются в очередь, вызывают меня головные боли ..Пожарная клавиша при нажатии других клавиш

Пример обработчика для поля ввода:

$('input').on('keyup', function (e) { 

    var $this = $(this); 
    var code = e.keyCode || e.which; 

    alert(String.fromCharCode(code)+' '+$this.val()); 

    // Handling of $this.val()==3 

}); 

http://jsfiddle.net/tPyTq/1/

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

Как я могу сделать пожар клавиатуры-события, в то время как другие клавиши все еще нажаты? Пожалуйста, спросите, требуется ли уточнение.

+0

не забывайте, что JS также «круто»: '$ (this) .val()' == 'this.value' –

+0

что за пункт обмена одной строкой для ванильного javascript, если буквально других строк jquery ? – Kristian

ответ

0

Получаю, что вы имеете в виду. Это может немного взломать.

попробовать это, хотя он может не работать:

  1. Изменение прослушиватель событий, чтобы быть на change

    $('input').on('change', function(e) { 
        //use console rather than alert 
        console.log(String.fromCharCode(code)+' '+$this.val()); 
    }); 
    
  2. Затем добавить отдельный приемник для keyup, который запускает событие изменения

    $('input').on('keyup', function (e) { 
        $(this).trigger('change'); 
    }); 
    
Смежные вопросы