Déclencher un évènement dans un champ inline

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
Schnee
Messages : 3
Enregistré le : 11 mars 2021, 22:30

Déclencher un évènement dans un champ inline

Message par Schnee » 11 mars 2021, 22:58

Bonjour,
J'ai un champ INPUT avec un évènement onchange, par exemple :

Code : Tout sélectionner

<INPUT NAME="machin" onchange="machinChange()">
Dans un tout autre fichier (Custom tag en ColdFusion), j'ai un code qui change le contenu du champ.
Question n°1 comment se fait-il que l'évènement machinChange() ne soit pas déclenché puisque l'élément machin a changé ?
Question n° 2 : comment est-ce que je peux le déclencher dans le code qui effectue le changement.
Dans tous les exemples avec dispatchEvent que je vois qu l'évènement est créé dans le code. Je ne veux pas le créer, il existe déjà.

Merci.

Avatar du membre
webmaster
Administrateur du site
Messages : 396
Enregistré le : 28 févr. 2017, 15:19

Re: Déclencher un évènement dans un champ inline

Message par webmaster » 12 mars 2021, 13:00

Bonjour,

Il me semble que le onchange ne se déclenche que lorsque le champ perd le focus, c'est-à-dire quand il a été modifié par une action de l'utilisateur.

Après quelques recherches, il apparait que l'event oninput pourrait fonctionner. sinon il faut lancer le traitement quand le script change le contenu, sans compter sur un event.
TJS : 20 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Schnee
Messages : 3
Enregistré le : 11 mars 2021, 22:30

Re: Déclencher un évènement dans un champ inline

Message par Schnee » 12 mars 2021, 16:57

webmaster a écrit :
12 mars 2021, 13:00
sinon il faut lancer le traitement quand le script change le contenu, sans compter sur un event.
D'accord, le problème, c'est le code qui modifie le champ est dans un custom Tag (penser fonction externe), il ne sait pas quel est le traitement qu'il faut faire. Par contre, il connait le code qui est dans le onchange, mais comment peut-il lancer son exécution ? Eval() ? Oui, je sais, il y en a qui font une montée de lait dès qu'on évoque ce mot :o

Avatar du membre
webmaster
Administrateur du site
Messages : 396
Enregistré le : 28 févr. 2017, 15:19

Re: Déclencher un évènement dans un champ inline

Message par webmaster » 12 mars 2021, 17:45

Un eval n'est pas nécessaire

Je ferai un document.myForm.machin.change() qui devrait déclencher l'événement et donc le traitement associé...
TJS : 20 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Schnee
Messages : 3
Enregistré le : 11 mars 2021, 22:30

Re: Déclencher un évènement dans un champ inline

Message par Schnee » 12 mars 2021, 22:57

webmaster a écrit :
12 mars 2021, 17:45
Un eval n'est pas nécessaire

Je ferai un document.myForm.machin.change() qui devrait déclencher l'événement et donc le traitement associé...
Ouais, ça ça serait avec jQuery, mais là je n'ai pas.
J'ai fini par faire :

Code : Tout sélectionner

  if(inp.onchange)
    {
    var event = new Event('change');
    inp.dispatchEvent(event);
    }
... et ça marche.
Merci

Répondre