У меня есть такая функция:
$(document).ready(function() {
$("#dSuggest").keypress(function() {
var dInput = $('input:text[name=dSuggest]').val();
console.log(dInput);
$(".dDimension:contains('" + dInput + "')").css("display","block");
});
});
По какой-то причине при первом нажатии клавиши я получаю в журнале консоли пустую строку.
jquery
jquery-events
Или Вайнбергер
источник
источник
input
типа события.Понимая, что это довольно старый пост, я все равно дам ответ, поскольку боролся с той же проблемой.
"input"
Вместо этого вы должны использовать событие и зарегистрироваться с помощью.on
метода. Это быстро - без задержекkeyup
и решает последнюю описанную вами проблему с отсутствием нажатия клавиш.Демо здесь
источник
Используйте
.keyup
вместо нажатия клавиши.Также используйте
$(this).val()
или простоthis.value
для доступа к текущему входному значению.ДЕМО здесь
Информация о
.keypress
jQuery docs,источник
keyup
работает слишком медленно, и можно нажимать и удерживать клавишу, не отпуская ее, и все должно происходить. лучше использоватьkeydown
с небольшим таймаутом, чтобы значение действительно изменилось.Вы должны прервать поток выполнения, чтобы разрешить обновление ввода.
источник
keyup
delay слишком медленный для некоторых целей, а также не выполняет автоматическую фильтрацию клавиш-модификаторов. На самом деле это работает лучше для меня.Это потому, что
Keypress
событие запускается перед добавлением нового персонажа. Вместо этого используйте событие keyup, которое отлично подойдет в вашей ситуации.Я хочу добавить к этому, если у вас много текстовых полей и вы должны сделать то же самое с их событием keyup, вы можете просто дать им общий класс css (например, commoncss) и применить событие keyup, подобное этому.
это значительно сократит ваш код, поскольку вам не нужно применять событие keyup по идентификатору для каждого текстового поля.
источник
Я искал пример ES6 (чтобы он мог передать мой линтер). Итак, для других людей, которые ищут то же самое:
Я бы также использовал keyup, потому что вы получаете текущее значение, которое заполнено.
источник
Просто используйте тайм-аут, чтобы позвонить; тайм-аут будет вызываться, когда стек событий завершится (то есть после вызова события по умолчанию)
источник
Я думаю, что вам нужен прототип ниже
источник
jQuery получает входное значение после нажатия клавиши
https://www.tutsmake.com/jquery-keypress-event-detect-enter-key-pressed/
источник