Eu tenho a seguinte função:
$(document).ready(function() {
$("#dSuggest").keypress(function() {
var dInput = $('input:text[name=dSuggest]').val();
console.log(dInput);
$(".dDimension:contains('" + dInput + "')").css("display","block");
});
});
Por alguma razão, pela primeira vez que pressiono uma tecla, estou recebendo uma string vazia no log do console.
jquery
jquery-events
Ou Weinberger
fonte
fonte
input
tipo de evento.Percebendo que este é um post bastante antigo, fornecerei uma resposta de qualquer maneira, pois estava lutando com o mesmo problema.
Você deve usar o
"input"
evento e se registrar com o.on
método Isso é rápido - sem o atrasokeyup
e resolve o último problema de pressionamento de tecla que você descreve.Demonstração aqui
fonte
Use em
.keyup
vez de pressionar a tecla.Use também
$(this).val()
ou apenasthis.value
para acessar o valor de entrada atual.DEMO aqui
Informações sobre os
.keypress
documentos do jQuery,fonte
keyup
é muito lento e uma tecla pode ser pressionada e mantida sem ser liberada e as coisas precisam acontecer. melhor usarkeydown
com um pouco de tempo limite para que o valor realmente mude.Você precisa interromper o encadeamento de execução para permitir que a entrada seja atualizada.
fonte
keyup
o atraso é muito lento para alguns propósitos e também não filtra automaticamente as teclas modificadoras. Isso realmente funciona melhor para mim.Isso ocorre porque o
Keypress
evento é disparado antes que o novo caractere seja adicionado. Use o evento 'keyup', que funcionará perfeitamente na sua situação.Quero acrescentar a isso, se você tem muitas caixas de texto e precisa fazer a mesma coisa no evento keyup, basta dar a elas uma classe css comum (por exemplo, commoncss) e aplicar o evento keyup dessa maneira.
isso reduzirá bastante o seu código, pois você não precisará aplicar o evento keyup por id para cada caixa de texto.
fonte
Eu estava procurando por um exemplo de ES6 (para que ele pudesse passar pelo meu ponteiro). Portanto, para outras pessoas que estão procurando o mesmo:
Eu também usaria keyup porque você obtém o valor atual que é preenchido.
fonte
Basta usar um tempo limite para fazer sua ligação; o tempo limite será chamado quando a pilha de eventos for concluída (ou seja, após a chamada do evento padrão)
fonte
Eu acho que o que você precisa é o protótipo abaixo
fonte
jQuery obtém valor de entrada após pressionar a tecla
https://www.tutsmake.com/jquery-keypress-event-detect-enter-key-pressed/
fonte