Ok, entonces busco en google, escribes texto en la entrada y te da entradas al instante. Pero no me gusta eso. Uso algo así $("TEXTINPUT").keyup(function() {
. Cuando el usuario escribe muy rápido, se conecta a la base de datos muchas veces. ¿Es posible que nos conectemos al archivo PHP solo cuando el usuario deja de escribir durante 1-2 segundos, pero no instantáneamente? Necesito hacer eso en jQuery. Gracias.¿Cómo acelerar la devolución de llamada del evento jQuery?
Respuesta
Probar:
var time_out;
$("TEXTINPUT").keyup(function(){
clearTimeout(time_out);
time_out = setTimeout(your_function, 500);
}
function your_function()
{
/*CHECK DATABASE*/
}
Así es como normalmente me lo planteo:
$(function(){
var tiTO, jqXHR;
$('textinput').keyup(function(){
if (tiTO) clearTimeout(tiTO);
if (jqXHR && jqXHR.abort) jqXHR.abort();
tiTO = setTimeout(function(){
jqXHR = $.ajax({....});
//Ajax call to PHP
},2000);
});
});
Cada keyup restablece el tiempo de espera, y aborta cualquier ajax activo.
Si utiliza el Underscore Library Es tan simple como esto:
$("TEXTINPUT").keyup(_.throttle(function() {...}, 150));
Docs desde el sitio Subrayado:
acelerador _.throttle (función, esperar)
Devuelve una versión estrangulado de la función, que, cuando se invoca en repetidas ocasiones, en realidad sólo se llame a la función ajustada como máximo una vez por cada esperar milisegundos. Es útil para eventos que limitan la velocidad que ocurren más rápido de lo que usted puede seguir.
También existe la función debounce
:
antirrebote _.debounce (función, espere)
Llamar a una función antirrebote pospondrá su ejecución hasta después de esperar milisegundos tienen transcurrido desde la última vez que se invocó la función . Útil para implementar el comportamiento que solo debería ocurrir después de que la entrada ha dejado de llegar. Por ejemplo: Representación de una vista previa un comentario de rebajas, volver a calcular un diseño después de la ventana ha dejado de ser redimensionada ...
+1 para subrayado :) –
Solo hay un problema: ¿qué pasa si * solo * necesita acelerar una devolución de llamada? Nadie necesita una biblioteca para hacer esto, solo una comprensión básica de javascript en el navegador. –
Esta función actúa un poco como underscore.js, pero sin la dependencia adicional. También pasará el alcance y los argumentos con los que se llama a la función envuelta. A diferencia de la respuesta de YoannM, esto devuelve una devolución de llamada independiente que no utiliza variables externas (por ejemplo, use tantas veces como desee).
function throttle (func, wait) {
return function() {
var that = this,
args = [].slice(arguments);
clearTimeout(func._throttleTimeout);
func._throttleTimeout = setTimeout(function() {
func.apply(that, args);
}, wait);
};
}
Y el uso sería casi idéntico al de la biblioteca underscore.js.
$('input').on('input keyup', throttle(function() {
// ...
}, 100));
Creo que esto es un antirrebote, no un comportamiento de estrangulamiento –
Ese es un buen punto; No tenía muy claro las diferencias entre el antirrebote y el acelerador cuando respondía la pregunta. La ironía de esto es que fue una adaptación de la función "acelerador" del guión bajo. @ ХристоПанайотов quizás podría aclarar: http://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function (No hay una respuesta particularmente buena allí). –
- 1. JQuery UI Autocompletar devolución de llamada
- 2. jQuery remove() devolución de llamada?
- 3. devolución de llamada de animación jquery - cómo pasar parámetros a la devolución de llamada
- 4. jQuery devolución de llamada después de slideUp
- 5. jQuery animado múltiple() de devolución de llamada
- 6. devolución de llamada en C#, orden de llamada y devolución
- 7. Cómo acceder al objeto de evento jQuery en una devolución de llamada Mar
- 8. jQuery devolución de llamada - estricta violación
- 9. Devolución de llamada asincrónica
- 10. Función de devolución de llamada JQuery .load()
- 11. ¿Cómo desencadena la devolución de llamada de "error" en una llamada jQuery AJAX utilizando ASP.NET MVC?
- 12. Jquery: esperar la devolución de llamada antes de devolver
- 13. Google Maps API v3 infowindow cerrar evento/devolución de llamada?
- 14. Cómo activar la devolución de llamada "error" en la llamada jQuery AJAX utilizando en PHP
- 15. reinicializar el acordeón jquery en la devolución de llamada
- 16. Devolución de la respuesta de una llamada Jquery AJAX
- 17. ¿cómo puedo activar la devolución de llamada de error ajax en la devolución de llamada exitosa?
- 18. Implementando la devolución de llamada del servicio a la actividad
- 19. ¿Cómo escribir una función jQuery con una devolución de llamada?
- 20. jQuery JSONP no llama a la devolución de llamada
- 21. jQuery: ¿Qué es una "devolución de llamada de valor"?
- 22. Función de devolución de llamada para JSONP con JQuery ajax
- 23. $ envío (este) en una devolución de llamada
- 24. ¿Cómo acelerar jquery mobile/phonegap?
- 25. jquery descargar un archivo en devolución de llamada
- 26. de devolución de llamada en función de contenedor jQuery
- 27. jQuery Plugin: Adición de funcionalidad de devolución de llamada
- 28. carga perezosa Google Maps API v3 jQuery devolución de llamada
- 29. Jquery - Realizar devolución de llamada después de anexar
- 30. En la devolución de llamada de éxito de jQuery, ¿textStatus nunca será "exitoso"?
use 'setTimeout' con' keyup' fucntion – diEcho
¿Puedo entender la etiqueta PHP aquí pero mysql? –