jQuery UI Autocomplete: comment avez-vous un processus asynchrone et quitter avant qu'il se termine

StackOverflow https://stackoverflow.com/questions/4439953

Question

J'utilise jQuery UI Autocomplete pour construire une interface de recherche.

Je l'ai défini une fonction personnalisée qui les retours les automatiquement clés résultats de la recherche et les mises à jour sont pressés cependant parfois cette fonction personnalisée ne se termine pas avant la prochaine touche est pressée (ie son traitement encore « Wash » quand je l'ai déjà écrit "Washi" (sur le chemin de l'écriture "Washington").

Je voudrais tout appel à l'événement autocomplete « source » pour annuler la fonction précédente (Wash) et commencer la nouvelle fonction (Washi). Avec la fonction suivante annulation de l'appel (Washi) et la fonction de démarrage (Washin) et ainsi de suite.

Comment est ce genre de chose fait?

Était-ce utile?

La solution

Vous devriez être en mesure de faire quelque chose comme ceci:

var lastXhr;
$( "#myAutocomplete" ).autocomplete({
    source: function( request, response ) {
        if (lastXhr) lastXhr.abort();
        lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) {
            if ( xhr === lastXhr ) {
                response( data );
            }
        });
    }
});

les magasins var lastXhr la demande de plus XHR actuelle. S'il y a un jeu et la fonction source est appelée alors il annule la demande lastXhr et fait une nouvelle. Au retour de la demande ajax si assurez-vous qu'il correspond à la lastXhr, sinon il ne remet pas la fonction response().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top