11
votes

jQuery autocomplete: comment rafraîchir la liste?

J'ai une forme avec un nombre variable de champs autocomplete utilisant la même liste de sélection. Ces champs sont ajoutés et supprimés selon les besoins. Chaque fois qu'un paramètre de la page est modifié, i (Essayez de) mettre à jour la liste des champs pour tous les champs en appelant Unbind () code> puis autocomplete () code> avec un nouveau paramètre ajouté à l'URL.

$('input.foo').unbind().autocomplete(url?new_param=bar);


0 commentaires

6 Réponses :


2
votes

Le plug-in Autocomplete ajoute une fonction appelée UNUUTOCOMPOMPETE () pour supprimer le fichier autocomplete () à partir de champs qui l'avez, cela devrait donc fonctionner si vous modifiez votre code sur:

$('input.foo').unautocomplete().autocomplete('url?new_param=bar');


6 commentaires

Hey, merci d'avoir répondu dantky. J'ai essayé Unutocomplete, mais cela n'a pas fonctionné. Je l'ai fait, cependant, utilisez l'enlèvement ("événements") et cela a fonctionné! $ ("INPUT.FOO ') Notez que si vous faites cela, tout autre événement attaché à cet élément sera épuisé.


@Cinematic Yeah, regardant dans le code du plug-in Autocomplecte, il est regrettable qu'ils nuisent à l'événement "Clé", mais pas aux événements clic, focus ou d'autres événements qui sont ajoutés à l'entrée dans le cadre de l'autoocomplète. S'ils avaient pris la peine de suivre, il s'agirait simplement d'aller .unbind ('KeyPress.Autocomplete »). Unbind (' click.Autocomplète'). etc. Bien que cela soit tous dans l'UNUUTOCOMPOMPOMPOMTOME () Je suppose.


Nice ... merci pour la solution.


Cette solution entraîne une ignifuge des éléments sur la touche DOWN dans IE lorsqu'il est rechargé.


Je répondrais correctement avec la solution de travail car il semble que @Cinematic le gêne.


Il semble que cette fonction a été supprimée puisque le plug-in JQuery Autocomplecte a obtenu un successeur, l'UI JQuery UI.



3
votes

Essayez ceci xxx


0 commentaires

0
votes

Je pense que votre problème est que vous n'avez pas de formulaire renfermant le champ de saisie automatique. Si vous regardez dans le code de jQuery.Autocomplete.js il fait $ (INPUT.FORM) .unbind (". Autocomplete"); sur Unutocomplete (), ce qui signifie que l'entrée doit vivre dans une étiquette de formulaire afin de travailler.


1 commentaires

$ (INPUT.FORM) ne serait pas exécuté. $ ("INPUT.FORM ') sélectionnerait des balises d'entrée avec le formulaire de classe, comme . Je pense que ce que vous envisagez est $ («entrée de formulaire»), qui seraient des balises d'entrée à l'intérieur des balises de formulaire. En tout cas, le code que vous mentionnez ci-dessus n'est pas présent dans jQuery.Autocomplete.js - Cette réponse n'est pas applicable.




1
votes

Si vous utilisez des options, ajoutez-la de cache-longueur et définissez-la sur 1. Ce paramètre ne stocke aucun des enregistrements retournés. Croyez-moi, cela a rendu ma vie meilleure ... pour toutes les 5 minutes.


1 commentaires

Juste pour être clair dans la déclaration ci-dessus: ce paramètre ne stockera aucun des enregistrements précédemment renvoyés. (Désolé!) Il effectuera une nouvelle récupération des enregistrements.