Je suis vraiment confus, et je ne sais même pas quoi chercher pour trouver des réponses. Je reçois plusieurs appels à une fonction javascript. Cela n'a pas de sens pour moi.jquery live incrémenter automatiquement l'événement de touche
Voici ce que fait le code.
$('expenses_txt').live(\'keyup\', function() {
$(this).typeWatch({ highlight: true, wait: 500, captureLength: 0, callback: calculate_expenses });
});
Le « Calculate_expenses » est une fonction javascript qui utilise ajax jquery pour appeler une page php qui renvoie des données qui obtient affiché dans une travée. J'utilise firebug pour m'aider à déboguer et dans la fonction Calculate_expenses je mets un "console.log" à déboguer lorsque cette fonction est appelée.
Voici ce qui se passe. J'ai seulement 1 boîte d'entrée dans le DOM au moment où cela se produit, quand je presse une seule touche, la sortie dans la console met un message de débogage comme il le devrait, quand j'appuie à nouveau sur une touche dans la même entrée la console est doublée (la fonction Calculate_expenses a été appelée deux fois mais ne devrait être appelée qu'une fois), quand j'appuie à nouveau sur une touche (pour un total de 3 pressions), la sortie de la console émet 3 appels à la fonction Calculate_expenses maintenant ..... et ainsi de suite. Je ne sais pas vraiment ce qui se passe ici. Le code me semble que cela ne ferait qu'appeler la fonction Calculate_expenses 1 fois, mais quand j'utilise firebug, il est appelé plusieurs fois quand je ne le veux pas.
Des idées? Est-ce la façon dont j'utilise .live() Si j'utilise simplement l'événement "keyup" cela fonctionne très bien, le problème est que j'ai besoin d'utiliser plugin typeWatch pour retarder l'appel ajax jusqu'à ce que la frappe soit terminée et que l'évènement keyup se déclenche bientôt. La raison pour laquelle j'utilise live() est que j'ajoute dynamiquement des éléments au dom et c'est la seule façon de comprendre comment utiliser à la fois typeWatch et ajouter dynamiquement des éléments au dom qui doit être résumé ...
vos pensées sont appréciées. Merci.
Quelle méthode utilisez-vous pour ajouter dynamiquement des éléments au dom? – user113716
patrick, j'ai pris votre suggestion plus tôt dans une autre question que j'ai dû utiliser .clone (true), qui a résolu le problème avec le keyup n'étant pas copié dans les nouvelles boîtes de saisie créées. Le problème est survenu quand j'ai essayé d'utiliser le plugin typeWatch ... cela ne fonctionnait que sur la 1ère case d'entrée, celles ajoutées dynamiquement ne se déclencheraient pas. C'est comme le problème que j'avais avant de résoudre avec .clone (true), mon seul problème est que "keyup" est standard, et que "typeWatch" ne l'est pas. D'autres pensées? – Ronedog