¿Hay una manera de tener keyup
, keypress
, blur
, y change
eventos llame a la misma función en una línea o tengo que hacer por separado?
El problema que tengo es que necesito validar algunos datos con una búsqueda de base de datos y me gustaría asegurarme de que la validación no se pierda en ningún caso, ya sea que esté escrita o pegada en el cuadro.
jquery
events
jquery-events
shaneburgess
fuente
fuente
.on('keyup.foo keypress.foo blur.foo change.foo', …)
o.on('keyup keypress blur change .foo', …)
?on('click tap', e => {...})
. El oyente puede activarse dos veces, solo quiero disparar una vez, ¿cómo puedo codificar en la función del oyente?$('#element:not(.busy)').on('keyup keypress blur change', function(e){…});
finalmente elimine el className 'busy'.A partir de jQuery 1.7, el
.on()
método es el método preferido para adjuntar controladores de eventos a un documento. Para versiones anteriores, el.bind()
método se utiliza para adjuntar un controlador de eventos directamente a los elementos.fuente
Estaba buscando una forma de obtener el tipo de evento cuando jQuery escucha varios eventos a la vez, y Google me puso aquí.
Entonces, para los interesados,
event.type
es mi respuesta:Más información en el documento jQuery .
fuente
Puede usar el método de vinculación para adjuntar funciones a varios eventos. Simplemente pase los nombres de los eventos y la función del controlador como en este código:
Otra opción es usar el soporte de encadenamiento de jquery api.
fuente
Si adjunta el mismo controlador de eventos a varios eventos, a menudo se topa con el problema de que más de uno de ellos se dispare a la vez (por ejemplo, el usuario presiona la pestaña después de la edición; la tecla, el cambio y el desenfoque podrían dispararse).
Parece que lo que realmente quieres es algo como esto:
fuente
Así es como lo hago.
fuente
Puede definir la función que desea reutilizar de la siguiente manera:
Y luego puede configurar la cantidad de oyentes de eventos que desee en su objeto para activar esa función usando on ('evento') dejando un espacio intermedio como se muestra a continuación:
fuente
La respuesta de Tatu es cómo lo haría intuitivamente, pero he experimentado algunos problemas en Internet Explorer con esta forma de anidar / vincular los eventos, a pesar de que se hace a través del
.on()
método.No he podido determinar exactamente con qué versiones de jQuery este es el problema. Pero a veces veo el problema en las siguientes versiones:
Mi solución ha sido definir primero la función,
y luego manejar los eventos individualmente
Esta no es la solución más bonita, pero funciona para mí, y pensé que lo pondría a disposición para ayudar a otros que podrían tropezar con este problema
fuente
Este tutorial trata sobre el manejo de múltiples eventos.
fuente
Es posible usar
.on()
, que acepta la siguiente estructura:,.on( events [, selector ] [, data ], handler )
por lo que puede pasar múltiples eventos a este método. En su caso, debería verse así:Y aquí está el ejemplo en vivo:
fuente
Es simple implementar esto con los métodos DOM integrados sin una gran biblioteca como jQuery, si lo desea, solo se necesita un poco más de código: itere sobre una matriz de nombres de eventos y agregue un escucha para cada uno:
fuente