Как я могу получить jQuery .val () ПОСЛЕ события нажатия клавиши?

Я добрался:

$(someTextInputField).keypress(function() {
  alert($(this).val());
});

Теперь предупреждение всегда возвращает значение ПЕРЕД нажатием клавиши (например, поле пусто, я ввожу, и предупреждение дает мне ''. Затем я тип 'b' и предупреждение даю мне...). Но я хочу значение ПОСЛЕ нажатия клавиши - как я могу сделать это?

Фон: я хотел бы включить кнопку, как только текстовое поле содержит по крайней мере один символ. Таким образом, я запускаю этот тест на каждом событии нажатия клавиши, но использование возвращенного val () результат всегда является одним шагом позади. Используя изменение () событие не является опцией для меня, потому что затем кнопка отключена, пока Вы не оставляете текстовое поле. Если существует лучший способ сделать это, я рад услышать его!

97
задан Jörg Brenninkmeyer 17 June 2010 в 16:06
поделиться

4 ответа

Измените нажатие на keyup :

$(someTextInputField).on("keyup", function() {
  alert($(this).val());
});

keypress срабатывает при нажатии клавиши, keyup срабатывает при отпускании клавиши.

144
ответ дан 24 November 2019 в 05:24
поделиться

вместо keypress используйте keyup.

9
ответ дан 24 November 2019 в 05:24
поделиться

Попробуйте что-нибудь вроде этого:

$('#someField').keypress(function() {
  setTimeout(function() {
    if ($('#someField').val().length > 0)
      $('#theButton').attr('disabled', false);
  }, 1);
});

Это просто вводит таймаут, чтобы после завершения цикла событий "keypress" ваш код выполнялся почти сразу после этого. Такой короткий интервал таймера (даже если браузер округлит его в большую сторону) не будет заметен.

edit - или вы могли бы использовать "keyup", как говорят все остальные, хотя семантика у него другая.

4
ответ дан 24 November 2019 в 05:24
поделиться

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

$(someTextInputField).change(function() {
    alert($(this).val());
});

Использование Правка> Вставить или щелчок правой кнопкой мыши, затем Вставить, вызовет событие изменения, но не ключевое событие. Обратите внимание: некоторые браузеры могут имитировать ключевое событие при вставке (хотя я не знаю ни одного), но вы не можете рассчитывать на такое поведение.

4
ответ дан 24 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: