2009-03-04 2 views
5

J'utilise l'extension jquery autocomplete 1.0.2 de Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer. J'essaie d'exécuter ma propre fonction de rappel lorsque .show() et .hide() sont appelés depuis le contrôle de saisie semi-automatique. Je n'ai trouvé aucun moyen de reconnaître ma fonction de rappel. Si quelqu'un est familier avec ce contrôle et peut aider, je serais grandement reconnaissant.Comment attacher une fonction de rappel personnalisée à l'extension jquery autocomplete?

Répondre

8

Désolé, je n'ai pas de réponse facile à votre question, j'ai vérifié le code source du plugin et je n'ai trouvé aucun mécanisme pour vous donner envie de le faire. Je pense que vous devrez mettre à jour ce plugin pour le faire fonctionner comme vous le souhaitez.

L'idée est d'ajouter vos rappels au paramètre options, puis de faire en sorte que le plugin utilise ces rappels. D'abord, vous devrez modifier le code du plugin. Aller à la fonction qui crée la classe en charge de montrer/cacher le contrôle autocomplete:

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

Si vous faites défiler vers le bas, vous pouvez voir que cette fonction retourne un objet avec show() et hide() méthodes. Vous pouvez ajouter le code suivant:

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

Enfin, lorsque vous créez votre saisie semi-automatique, vous devez ajouter vos callbacks à vos options:

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

Non testé du tout, il est juste une solution rapide et sale . J'espère que ça aide.

+0

merci ybo, en faisant un essai! –

+1

ça marche! vous êtes génial! J'ai en fait le show et cache les fonctions de rappel que je veux appelé prédéfini, donc je fais juste showCallback: myShow, hideCallback: myHide et ça marche, merci encore! –

+0

Great;) Vous pouvez essayer de soumettre l'idée/le code aux auteurs, ils peuvent être intéressés. – ybo

Questions connexes