L'introduction de retard, tout appel ajax dans select2 plugin
Je suis à l'aide de select 2 exemple de http://ivaynberg.github.io/select2/
Je suis à l'aide de "Chargement à Distance des Données" par exemple dans cette page.
Problème: dès Que je tape une lettre, le système fait un appel ajax. Je veux vous présenter un retard de 1 seconde au cours de cette demande qui va permettre à l'utilisateur de saisir sa chaîne de recherche.
Je suis l'ajout de code à partir du site. S'il vous plaît laissez-moi savoir comment introduire retard.
("#e6").select2({
placeholder: "Search for a movie",
minimumInputLength: 1,
ajax: { //instead of writing the function to execute the request we use Select2's convenient helper
url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json",
dataType: 'jsonp',
data: function (term, page) {
return {
q: term, //search term
page_limit: 10,
apikey: "ju6z9mjyajq2djue3gbvv26t" //please do not use so this example keeps working
};
},
results: function (data, page) { //parse the results into the format expected by Select2.
//since we are using custom formatting functions we do not need to alter remote JSON data
return {results: data.movies};
}
},
initSelection: function(element, callback) {
//the input tag has a value attribute preloaded that points to a preselected movie's id
//this function resolves that id attribute to an object that select2 can render
//using its formatResult renderer - that way the movie name is shown preselected
var id=$(element).val();
if (id!=="") {
$.ajax("http://api.rottentomatoes.com/api/public/v1.0/movies/"+id+".json", {
data: {
apikey: "ju6z9mjyajq2djue3gbvv26t"
},
dataType: "jsonp"
}).done(function(data) { callback(data); });
}
},
formatResult: movieFormatResult, //omitted for brevity, see the source of this page
formatSelection: movieFormatSelection, //omitted for brevity, see the source of this page
dropdownCssClass: "bigdrop", //apply css that makes the dropdown taller
escapeMarkup: function (m) { return m; } //we do not want to escape markup since we are displaying html in results
});
Au lieu d'ajouter un délai ne pouvez-vous pas vérifier le nombre de caractères entrés par l'utilisateur ? ex: vérifiez la météo utilisateur a saisi plus de 3 caractères avant l'envoi de la demande ?
OriginalL'auteur SharpCoder | 2013-08-11
Vous devez vous connecter pour publier un commentaire.
La réponse à votre question est dans l'exemple que vous avez indiqué pour:
il suffit de changer le
quietMillis
à quelque chose de plus grand, comme le dit la documentation:talsibony la réponse est de travailler maintenant. quietMillis ne fonctionne pas de nouvelles versions
Convenu ce qui semble être une version spécifique. quietMillis est respectée, mais le retard n'est pas dans select2 3.5.2.
OriginalL'auteur lpiepiora
Je suppose que quietMillis la propriété a été modifiée pour retard dans les nouvelles versions de select2:
https://select2.github.io/options.html#a-request-is-being-triggered-on-every-key-stroke-can-i-delay-th
OriginalL'auteur talsibony
À l'aide d'un utilitaire comme underscore.js vous donne la possibilité d'utiliser certaines fonctionnalités, comme
debounce
!Ce exactement résout votre problème.
debounce
va reporter son exécution jusqu'à ce que attendre millisecondes. Vous pouvez trouver plus d'info le trait de soulignement docsOriginalL'auteur Bartek
Vous pouvez utiliser setTimeout fonction:
OriginalL'auteur jcubic