Подтвердить что ты не робот

Получить значение ввода после нажатия клавиш/нажатия клавиш

У меня есть <input type="text">, и мне нужно вызвать функцию после того, как текст в текстовом поле был изменен (в том числе действия, выполняемые во время jQuery keydown и обработчики нажатия клавиш).

Если я вызываю свою функцию из обработчика jQuery, я вижу значение (e.target.value), как это было до добавления ввода. Поскольку я не хочу, чтобы каждый раз вручную добавлять входные данные в значение, как я могу вызвать свою функцию и использовать ее обновленное значение?

4b9b3361

Ответ 1

Если я понимаю вас правильно, тогда что-то вроде этого способ, которым вы можете это сделать

$('input').bind('change keydown keyup',function (){
   /// do your thing here.
   //  use $(this).val() instead e.target.value
});

Обновлено: 03/05/13

Обратите внимание на: вам лучше использовать .on() в качестве противопоставления .bind()

Как и в jQuery 1.7, метод .on() является предпочтительным методом привязки обработчиков событий к документу. Для более ранних версий метод .bind() используется для привязки обработчика события непосредственно к элементам. Обработчики привязаны к выбранным в данный момент элементам в объекте jQuery, поэтому эти элементы должны существовать в точке, где происходит вызов в .bind(). Для более гибкой привязки событий см. Обсуждение делегирования событий в .on() или .delegate().

Для получения дополнительной информации jQuery Bind

Ответ 2

Вы можете использовать keyup - поэтому вы вызываете его только после того, как ключ был выпущен:

$("#idofinputfield").keyup(function() {
    youFunction($(this).val());
});

Ответ 3

Попробуйте

$('#target').keyup(function(){       
     alert($(this).val());      
});

Ответ 4

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

$("#container").keydown(function (e) {
   //here you decide whether to handle the key event, and grab the control that sent the event 
   var myInput = e.target;
   $("#container").one('keyup', function() {
      console.log(myInput.val());  
      // do smth here
   });
});

Ответ 5

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

Вот код.

function validate()
{
  document.getElementById("divOutput").innerHTML = event.key;
  //I am here returning false so that you can see that this value is being entered before the text is input. This is very useful for number validation purposes.
  return false;
}
Enter Number: <input type="text" id="txtInput" onkeydown="return validate()" /><br />
You Entered <div id="divOutput"></div>

Ответ 6

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

$('input').bind('keypress',function (){
   var value = e.target.value,
        idx = e.target.selectionStart,
        key = e.key;
        value =  value.slice(0, idx) + key + value.slice(idx + Math.abs(0));
    return yourfunction(value);
});