Usando jQuery, me gustaría ejecutar una función cuando .change()
o .keyup()
se plantean.
Algo como esto.
if ( jQuery(':input').change() || jQuery(':input').keyup() )
{
alert( 'something happened!' );
}
EDITAR
Lo siento, olvidé mencionarlo. Ambos .change()
y .keyup()
necesitan que algunas de las variables estén dentro del alcance.
javascript
jquery
function
cnotethegr8
fuente
fuente
need some of the variables to be in-scope
¿Te refieres a variables del evento o variables que estás usando cuando registras estos controladores de eventos? Obtiene las variables de evento en el parámetro de evento (generalmente llamadoe
), de lo contrario, es posible que deba mantenerlas en el nivel de la ventana o en los datos del elemento hasta que se generen los eventos o ver los cierres.Respuestas:
puede enlazar a varios eventos separándolos con un espacio:
$(":input").on("keyup change", function(e) { // do stuff! })
docs aquí .
Espero que ayude. ¡salud!
fuente
Si alguna vez está generando contenido de página de manera dinámica o cargando contenido a través de AJAX, el siguiente ejemplo es realmente el camino que debe seguir:
body
documento, por lo que independientemente de los elementos que se agreguen, muevan, eliminen y vuelvan a agregar, todos los descendientes quebody
coincidan con el selector especificado conservarán el enlace adecuado.El código:
// Define the element we wish to bind to. var bind_to = ':input'; // Prevent double-binding. $(document.body).off('change', bind_to); // Bind the event to all body descendants matching the "bind_to" selector. $(document.body).on('change keyup', bind_to, function(event) { alert('something happened!'); });
¡Note por favor! Estoy utilizando
$.on()
y en$.off()
lugar de otros métodos por varias razones:$.live()
y$.die()
están en desuso y se han omitido en versiones más recientes de jQuery.$.change()
y por$.keyup()
separado, o pasar la misma declaración de función a cada función llamada; Duplicando la lógica ... Lo cual es absolutamente inaceptable.$.bind()
no se vincula dinámicamente a los elementos a medida que se crean. Por lo tanto, si se vincula:input
y luego agrega una entrada al DOM, ese método de vinculación no se adjunta a la nueva entrada. Luego, necesitaría desvincular explícitamente y luego volver a vincular todos los elementos en el DOM (de lo contrario, terminará duplicando los enlaces). Este proceso deberá repetirse cada vez que se agregue una entrada al DOM.fuente
var bind_to = ':input';
crea una variable llamadabind_to
que es un selector para tomar todos los tipos de entrada, comoinput
,textarea
ybutton
.var bind_to = '#myInput';
la llamada ajax se ejecuta dos veces de todos modos. ¿¿¿Por qué???Hacer esto.
$(function(){ var myFunction = function() { alert("myFunction called"); } jQuery(':input').change(myFunction).keyup(myFunction); });
fuente
change()
ykeyup()
devuelva el juego envuelto, para que pueda encadenarlo.Puede suscribirse a los eventos de cambio y activación:
$(function() { $(':input').change(myFunction).keyup(myFunction); });
donde
myFunction
está la función que le gustaría ejecutar:function myFunction() { alert( 'something happened!' ); }
fuente
No es así como funcionan los eventos. En su lugar, les da una función para llamar cuando sucedan.
$("input").change(function() { alert("Something happened!"); });
fuente
Escribe una sola función y llámala para ambas.
function yourHandler(e){ alert( 'something happened!' ); } jQuery(':input').change(yourHandler).keyup(yourHandler);
Las funciones de registro de eventos change () y keyup () devuelven el conjunto original, por lo que pueden encadenarse.
fuente
entrada de evento keyup jquery
Para demostración
$(document).ready(function(){ $("#tutsmake").keydown(function(){ $("#tutsmake").css("background-color", "green"); }); $("#tutsmake").keyup(function(){ $("#tutsmake").css("background-color", "yellow"); }); });
<!DOCTYPE html> <html> <title> jQuery keyup Event Example </title> <head> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> </head> <body> Fill the Input Box: <input type="text" id="tutsmake"> </body> </html>
fuente