2016-02-16 3 views
-1

У меня есть поле ввода, и мне нужно выяснить, какой последний символ используется для ввода пользователем. Это может быть последняя буква на входе, но она также может быть в любом месте поля ввода.jQuery: Получить последнее изменение в поле ввода

мне нужно что-то вроде этого:

var timerid;  
    $("#input").on("propertychange change click keyup input paste",function(e){ 
     var value = $(this).val(); 
     if($(this).data("lastval")!= value){ 
      $(this).data("lastval",value); 

      //console.log(difference between lastval and value or something similar to get the last character the user types in the input) 

      clearTimeout(timerid); 
      timerid = setTimeout(function() { 

       //change action 
       console.log(value);    
       input_array(value) 

      },400); 

     }; 
    }); 
+0

оффтоп: вы не хотите, что 'если lastval = value', в противном случае, если вы продолжаете нажимать одну и ту же клавишу, вы получите несколько (все еще debounced, но несколько) console.logs для тот же ключ, а не только последний. –

+0

Что бы вы ожидали сохранить в 'input_array', если пользователь вставляет все слова? Или они выбирают текст и нажимают ctrl-x. Возможно, вам захочется определить ваши требования немного более четко, чем «последнее изменение». Последний символ напечатан? Тогда почему у вас есть «propertychange» и «paste» в вашем примере? –

+0

спасибо, Это о последнем символе, введенном пользователем здесь. Но вход можно использовать и в противном случае, например, вставляя что-то. – buckdanny

ответ

1

Просто использовать keydown событие и String.fromCharCode метод

$('input').on('keydown', function(event) { 
 
    $('#key-entered').html(String.fromCharCode(event.keyCode)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' /> 
 

 
<p id='key-entered'>

Смежные вопросы