Page 1 sur 1

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

Posté : 11 mars 2021, 22:58
par Schnee
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.

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

Posté : 12 mars 2021, 13:00
par webmaster
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.

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

Posté : 12 mars 2021, 16:57
par Schnee
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

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

Posté : 12 mars 2021, 17:45
par webmaster
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é...

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

Posté : 12 mars 2021, 22:57
par Schnee
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