получить значение ввода после нажатия клавиш / нажатия клавиш - PullRequest
21 голосов
/ 28 февраля 2011

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

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

Ответы [ 5 ]

23 голосов
/ 28 февраля 2011

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

$('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

16 голосов
/ 28 февраля 2011

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

$("#idofinputfield").keyup(function() {
    youFunction($(this).val());
});
3 голосов
/ 28 февраля 2011

Вы пробовали

$('#target').keyup(function(){       
     alert($(this).val());      
});
1 голос
/ 11 октября 2012

Если вам нужно привязать элемент вверх по иерархии, вы можете подписаться на событие 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
   });
});
0 голосов
/ 03 мая 2017

Вы должны использовать 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...