Voici la configuration en bref. J'ai une grande table. Chaque fois qu'une cellule se concentre un appel asyncron au serveur est fait (avec PageMethods) et certaines données sont retournées et met à jour une infobox dans la page. J'ai écrit un code qui permet de naviguer entre les cellules avec les touches fléchées. Le problème se produit lorsque je déplace le focus rapidement à travers plusieurs cellules afin d'atteindre la cellule que je veux. Chaque get-focus est exécuté et comme la communication avec le serveur prend environ une demi-seconde, cela devient très irritant et pas très convivial. Idéalement, je voudrais exécuter uniquement le dernier événement de mise au point. Mais comment? Je ne peux pas savoir quel événement est le dernier, je peux? Des idées, quelqu'un?Exécuter uniquement la dernière fonction appelée
Répondre
En principe, vous avez besoin d'une minuterie de courte durée qui commence à être décomptée lorsqu'un événement de mise au point est déclenché. Si un autre événement se produit avant l'expiration du temporisateur, vous le redémarrez, sinon vous exécutez la logique OnFocus pour la dernière cellule.
L'astuce consiste à faire en sorte qu'il soit suffisamment court pour que l'interface utilisateur reste sensible, mais assez longtemps pour éviter de déclencher plusieurs appels au serveur. Malheureusement pour vous, je ne sais pas comment vous le feriez pour ASP.NET, mais je l'ai fait dans Winforms pour des situations similaires.
Paolo est juste sur.
Pour ce faire sur le web vous combiner votre événement de mise au point en cours avec le javascript timing functions setTimeout et clearTimeout:
var timer; // timer variable in scope for other functions
var onFocus = function() {
clearTimeout(timer);
timer = setTimeout("makePageMethodCall()", 500);
}
var makePageMethodCall = function() {
// make ajax call to your PageMethod function
}
L'appel à setTimeout() crée une demi-seconde le temps d'attente avant d'appeler la méthode qui faire l'appel à votre serveur. Si un autre événement de mise au point se produit avant l'expiration de ce temporisateur, l'appel clearTimeout() annulera le temporisateur en cours avant qu'un autre soit démarré. Comme le recommande Paolo, vous pouvez expérimenter avec la durée de 500 ms pour trouver la valeur qui convient le mieux à votre situation.
- 1. La fonction Javascript est appelée uniquement sur l'événement!
- 2. Android Exécuter l'application depuis la dernière activité
- 3. La fonction onreadystatechange n'est pas appelée
- 4. PHP Toujours exécuter la fonction
- 5. jqGrid - la fonction d'édition n'est jamais appelée
- 6. La fonction Flex Set n'est pas appelée
- 7. Fonction jQuery appelée par fonction JavaScript générique
- 8. Obtenir appel nom de la fonction de fonction appelée
- 9. exécuter la fonction uniquement si l'événement par défaut est/n'est pas empêché
- 10. Fonction virtuelle ignorée non appelée
- 11. sql query - join qui renvoie uniquement la dernière ligne
- 12. Obtenir uniquement la dernière ligne, groupée par une colonne
- 13. JasperReports pied de page uniquement imprimé sur la dernière page
- 14. Comment sélectionner uniquement la dernière entrée d'une table?
- 15. sed + éliminent chaîne uniquement dans la dernière ligne du fichier
- 16. Puis-je mettre en cache uniquement la dernière page visitée?
- 17. WebtextEdit exécuter la fonction Javascript
- 18. Force la fonction .change() à exécuter - jQuery
- 19. appelant une fonction javascript (dans la fonction d'origine) de la fonction appelée?
- 20. Création d'une fonction Javascript appelée depuis PHP
- 21. Pourquoi ma fonction n'est pas appelée cliquer?
- 22. fonction mprotect appelée avec 5 arguments
- 23. mettre un setInterval lorsqu'une fonction appelée
- 24. numéro de ligne Gettin de la fonction appelée
- 25. Pourquoi la fonction php_template_preprocess_page n'est pas appelée dans Drupal 6x?
- 26. Cacher la fonction serveur appelée dans une requête ajax
- 27. Où la fonction grails appelée "champ (n)" est-elle documentée?
- 28. javascript open.window renvoie null dans la fonction appelée
- 29. Comment passer des paramètres à la fonction appelée par ElapsedEventHandler?
- 30. Comment traiter la fonction javascript appelée onload en arrière-plan?
@Magnus - J'ai repensé votre question afin que plus de gens aient une chance de la trouver. – Paolo
par cellules voulez-vous dire que vous avez des zones de texte ??? –