2009-03-04 8 views
5

Estoy usando la extensión jquery autocomplete 1.0.2 por Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer. Estoy intentando ejecutar mi propia función de devolución de llamada cuando se llaman a .show() y .hide() desde el control de autocompletar. No he encontrado ninguna forma de que reconozca realmente mi función de devolución de llamada. Si alguien está familiarizado con este control y puede ayudar, le agradecería enormemente.¿Cómo se puede adjuntar una función de devolución de llamada personalizada a la extensión de autocompletado de jquery?

Respuesta

8

Lo siento, no tengo una respuesta fácil para su pregunta, he comprobado el código fuente del complemento y no encontré ningún mecanismo que le permita hacer lo que quiera. Creo que tendrá que actualizar este plugin usted mismo para que funcione como lo desee.

La idea es agregar sus devoluciones de llamada al parámetro options y luego hacer que el complemento use estas devoluciones de llamada. Primero, tendrás que modificar el código del complemento. Ir a la función que crea la clase encarga de mostrar/ocultar el control de autocompletar:

$.Autocompleter.Select = function (options, input, select, config) { 

Si se desplaza hacia abajo, se puede ver que esta función devuelve un objeto con show() y hide() métodos. Puede añadir el siguiente código:

hide: function() { 
    ... 
    options.showCallback && options.showCallback(); // Invoke callback function if set 
}, 
... 
show: function() { 
    ... 
    options.hideCallback && options.hideCallback(); // Invoke callback function if set 
}, 

Por último, cuando se crea el autocompletar, se debe añadir sus devoluciones de llamada a sus opciones:

$("#myTextBox").autocomplete("http://...", 
{ 
    showCallback : function() { /* do what you want here */ }, 
    hideCallback : function() { /* do what you want here */ } 
}); 
No

probado en absoluto, es sólo una solución rápida y sucia . Espero que esto ayude.

+0

gracias ybo, pruébalo! –

+1

¡funciona! ¡eres increíble! De hecho, tengo las funciones de mostrar y ocultar de devolución de llamada que quiero, llamadas predefinidas, así que simplemente muestro CallCallback: myShow, hideCallback: myHide y simplemente funciona, ¡gracias de nuevo! –

+0

Estupendo;) Puede intentar enviar la idea/código a los autores, pueden estar interesados. – ybo

Cuestiones relacionadas