JQuery UI Autocomplete: Effacer le critère de recherche précédent
Sur l'événement keydown de l'jQuery UI Autocomplete widget le cas de défaut de déclaration a le code suivant:
default:
//keypress is triggered before the input value is changed
clearTimeout( self.searching );
self.searching = setTimeout(function() {
//only search if the value has changed
if ( self.term != self.element.val() ) {
self.selectedItem = null;
self.search( null, event );
}
}, self.options.delay );
break;
De ce que je peux voir la sixième ligne du code ci-dessus empêche l'exécution si l'utilisateur tape dans la même valeur à deux reprises. Cela a un sens, la plupart du temps, mais dans mon scénario, il est à l'origine du problème.
Je suis de la construction d'une application ajax qui a un en-tête fixe avec un terme de recherche dans la partie supérieure. L'utilisateur peut taper dans tout ce qu'ils veulent dans la boîte de recherche et une div qui s'affiche avec les résultats de recherche correspondant à leur requête. Si l'utilisateur tape dans " abc " et clique sur un résultat, il charge la page correspondante via ajax et efface la zone de recherche. Le problème est que si ils les types d'utilisateurs de " abc " encore une fois, la méthode de recherche n'est pas déclenché que ce qu'ils ont tapé correspond à ce qu'ils dernier recherché.
Est-il un moyen pour désactiver l'auto.la valeur stockée dans le widget lorsque l'utilisateur clique sur un résultat de recherche? Ou est-il une autre façon de résoudre mon problème sans avoir à faire cuire jusqu'à ma propre version de la saisie semi-automatique widget?
Grâce
source d'informationauteur Nick Olsen
Vous devez vous connecter pour publier un commentaire.
Procédant de la manière suivante réinitialise le terme de recherche précédent:
Si vous effectuez les opérations suivantes lorsqu'un élément est sélectionné, il sera clairement le terme de recherche précédent et faire le widget effectuer une recherche si ils dans la même valeur à nouveau.
Malheureusement,
ne pas effacer le champ de saisie. Pour ce faire, les ouvrages suivants:
si la saisie semi-automatique fonction renvoie de soi, pour votre élément de saisie semi-automatique vous devez simplement être en mesure d'appeler
lorsque vous souhaitez effacer.
Cela ne fonctionne PAS pour moi:
Cependant, cela A fonctionné pour moi en jQuery UI - v1.10.2:
Vous devriez essayer :
Laissez-moi savoir si cela fonctionne pour vous
L'Api ont changé dans les dernières versions de jQuery/jQuery UI.
Le bon moyen d'accéder à la propriété sur l'instance widget est maintenant:
Exemple de Code: http://jsfiddle.net/altano/sdpL17z5/
Vérifié travailler avec jQuery UI 1.11.4 et jQuery 2.2.3
Après avoir franchi le champ de texte, vous pouvez réinitialiser la recherche précédente, en invoquant le jquery ui autocomplete "recherche" avec une chaîne vide.
Par défaut il y a un minimum de recherche, de la longueur qui doit être satisfaite avant tout objets, de sorte qu'il supprime efficacement la recherche sans afficher tous les résultats.
http://api.jqueryui.com/autocomplete/#method-search
Cela devrait être d'une manière stable à gérer cette situation comme méthode de recherche n'a pas changé au fil du temps.