Eu tenho:
$(someTextInputField).keypress(function() {
alert($(this).val());
});
Agora o alerta sempre retorna o valor ANTES do pressionamento de tecla (por exemplo, o campo está vazio, eu digito 'a' e o alerta me dá ''. Então eu digito 'b' e o alerta me dá 'a' ...). Mas eu quero o valor APÓS o pressionamento da tecla - como posso fazer isso?
Plano de fundo: gostaria de habilitar um botão assim que o campo de texto contiver pelo menos um caractere. Então, eu executo esse teste em cada evento de pressionamento de tecla, mas usando o val () retornado, o resultado está sempre um passo atrás. Usar o evento change () não é uma opção para mim porque o botão fica desabilitado até você sair da caixa de texto. Se houver uma maneira melhor de fazer isso, fico feliz em saber!
javascript
jquery
events
forms
javascript-events
Jörg Brenninkmeyer
fonte
fonte
Respostas:
Mudar
keypress
parakeyup
:keypress
é disparado quando a tecla é pressionada,keyup
é disparado quando a tecla é liberada.fonte
Surpreso que ninguém mencionou o evento js "input":
Recomendado.
https://developer.mozilla.org/en-US/docs/Web/Events/input
fonte
em vez de keypress, use keyup .
fonte
Como alternativa, você pode usar o evento keydown com um tempo limite de 0.
Dessa forma, as alterações serão aplicadas instantaneamente, em vez de serem aplicadas quando o usuário parar de segurar a tecla.
fonte
Você pode querer conectar um
onchange
manipulador de eventos em vez de usar qualquer um dos eventos-chave.Usar
Edit > Paste
ou um clique com o botão direito e depois colar irá disparar um evento de mudança, mas não um evento chave. Observe que alguns navegadores podem simular um evento importante em uma pasta (embora eu não saiba de nenhum), mas você não pode contar com esse comportamento.fonte
Experimente algo assim:
Isso simplesmente introduz um tempo limite para que, depois que o loop de evento "pressionamento de tecla" for concluído, seu código seja executado quase imediatamente depois disso. Um intervalo tão curto do cronômetro (mesmo se arredondado pelo navegador) não será perceptível.
editar - ou você pode usar "keyup" como todo mundo diz, embora sua semântica seja diferente.
fonte