Tengo la siguiente función:
$(document).ready(function() {
$("#dSuggest").keypress(function() {
var dInput = $('input:text[name=dSuggest]').val();
console.log(dInput);
$(".dDimension:contains('" + dInput + "')").css("display","block");
});
});
Por alguna razón, para la primera pulsación de tecla, obtengo una cadena vacía en el registro de la consola.
jquery
jquery-events
O Weinberger
fuente
fuente

inputtipo de evento.Al darme cuenta de que esta es una publicación bastante antigua, proporcionaré una respuesta de todos modos ya que estaba luchando con el mismo problema.
En su
"input"lugar, debe usar el evento y registrarse con el.onmétodo. Esto es rápido, sin el retrasokeyupy resuelve el último problema de pulsación de tecla que usted describe.Demo aquí
fuente
Usar en
.keyuplugar de presionar una tecla.Utilice también
$(this).val()o solothis.valuepara acceder al valor de entrada actual.DEMO aquí
Información sobre
.keypressdocumentos de jQuery,fuente
keyupes demasiado lento y se puede presionar y mantener presionada una tecla sin soltarlo y las cosas deben suceder. mejor usarkeydowncon un poco de tiempo de espera para que el valor realmente cambie.Debe interrumpir el hilo de ejecución para permitir que la entrada se actualice.
fuente
keyupel retraso es demasiado lento para algunos propósitos, y tampoco filtra automáticamente las teclas modificadoras. Esto realmente funciona mejor para mí.Esto se debe a que el
Keypressevento se dispara antes de agregar el nuevo personaje. Utilice el evento 'keyup' en su lugar, que funcionará perfectamente en su situación.Quiero agregar a esto, si tiene muchos cuadros de texto y tiene que hacer lo mismo en su evento keyup, simplemente puede darles una clase css común (por ejemplo, commoncss) y aplicar un evento keyup como este.
esto reducirá en gran medida su código, ya que no tiene que aplicar el evento keyup por id para cada cuadro de texto.
fuente
Estaba buscando un ejemplo de ES6 (por lo que podría pasar mi linter) Entonces, para otras personas que buscan lo mismo:
También usaría keyup porque obtienes el valor actual que se completa.
fuente
Simplemente use un tiempo de espera para hacer su llamada; se llamará al tiempo de espera cuando finalice la pila de eventos (es decir, después de que se llame al evento predeterminado)
fuente
Creo que lo que necesitas es el siguiente prototipo
fuente
jQuery obtiene el valor de entrada después de presionar una tecla
https://www.tutsmake.com/jquery-keypress-event-detect-enter-key-pressed/
fuente