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
input
tipo 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.on
método. Esto es rápido, sin el retrasokeyup
y resuelve el último problema de pulsación de tecla que usted describe.Demo aquí
fuente
Usar en
.keyup
lugar de presionar una tecla.Utilice también
$(this).val()
o solothis.value
para acceder al valor de entrada actual.DEMO aquí
Información sobre
.keypress
documentos de jQuery,fuente
keyup
es demasiado lento y se puede presionar y mantener presionada una tecla sin soltarlo y las cosas deben suceder. mejor usarkeydown
con 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
keyup
el 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
Keypress
evento 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