¿Hay algún evento en Jquery que se active solo si el usuario presiona el botón Intro en un cuadro de texto? ¿O algún complemento que se pueda agregar para incluir esto? Si no, ¿cómo escribiría un complemento rápido que hiciera esto?
javascript
jquery
jquery-events
Haga clic en Upvote
fuente
fuente
e.keyCode
teclas, mejor usoe.which
, esto garantizará que maneje el mismo botón en cada navegadorfuente
Aquí hay un complemento para usted: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/ )
fuente
$
variable para el complemento no es una buena idea ya que puede causar conflictos.$("#myInput").bind('click, onEnter', myCallback);
y funcione sin necesidad de nada más?heres un complemento jquery para hacer eso
para usarlo, incluya el código y configúrelo así:
jsfiddle de él aquí http://jsfiddle.net/VrwgP/30/
fuente
func.apply(this)
, de esa manera dentro de la función de devolución de llamada que puede usarthis
normalmente para acceder al elemento en el que se activó el evento.e.preventDefault(); e.stopPropagation();
dentro delif (e.keyCode)
bit.Cabe señalar que el uso de
live()
en jQuery ha quedado en desuso desde la versión1.7
y se ha eliminado en jQuery1.9
. En cambio,on()
se recomienda el uso de .Sugeriría encarecidamente la siguiente metodología para la unión, ya que resuelve los siguientes desafíos potenciales:
document.body
y pasar $ selector como el segundo argumento paraon()
, los elementos se pueden adjuntar, separar, agregar o eliminar del DOM sin necesidad de lidiar con eventos de re-enlace o doble enlace. Esto se debe a que el evento se adjunta endocument.body
lugar de hacerlo$selector
directamente, lo que significa que$selector
se puede agregar, eliminar y agregar nuevamente y nunca cargará el evento vinculado a él.off()
anteson()
, este script puede vivir dentro del cuerpo principal de la página o dentro del cuerpo de una llamada AJAX, sin tener que preocuparse por eventos de doble enlace accidentalmente.$(function() {...})
, este script puede ser cargado nuevamente por el cuerpo principal de la página o dentro del cuerpo de una llamada AJAX.$(document).ready()
no se dispara por solicitudes AJAX, mientras que$(function() {...})
sí.Aquí hay un ejemplo:
fuente
Si su entrada es
search
, también puede usaron 'search'
evento. Ejemplo.
fuente
Código HTML:-
Java Script Code
Su formulario no tiene el botón Enviar predeterminado
fuente
Otra variación sutil. Fui por una ligera separación de poderes, por lo que tengo un complemento para permitir la captura de la tecla Intro, luego simplemente me conecto a los eventos normalmente:
Y luego en uso:
Esta variación le permite usar la delegación de eventos (para enlazar elementos que aún no ha creado).
fuente
No pude hacer que el
keypress
evento se activara con el botón enter, y me rasqué la cabeza por un tiempo, hasta que leí los documentos de jQuery:" El evento de pulsación de tecla se envía a un elemento cuando el navegador registra la entrada del teclado. Esto es similar al evento de pulsación de tecla, excepto que el modificador y las teclas que no se imprimen como Shift, Esc y eliminan eventos de pulsación de tecla de activación pero no eventos de pulsación de tecla " . https://api.jquery.com/keypress/ )
Tuve que usar el evento
keyup
okeydown
para presionar el botón enter.fuente