OVH Cloud OVH Cloud

Comprendre le DOM du W3C et empêcher la propagation d'évènements...

1 réponse
Avatar
David BERCOT
Re-bonjour,

Suite =E0 mon probl=E8me de 'onchange', j'ai cherch=E9 =E0 comprendre un
peu mieux le DOM du W3C et notamment la gestion des =E9v=E8nements. Je
dois reconna=EEtre que tout n'est pas tr=E8s clair pour moi...

Si j'essaye de capturer l'=E9v=E8nement 'change' sur une zone input,
j'=E9cris :
document.getElementById("var01").addEventListener("change",monchange,true);

Et cela fonctionne, c'est-=E0-dire que la fonction "monchange" est bien
appel=E9e...
Maintenant, dans cette fonction, si je demande si l'=E9v=E8nement peut
=EAtre interrompu (via un alert(event.cancelable)), la r=E9ponse est true
!!!
Malheureusement, ni un preventDefault ni un stopPropagation ne
fonctionne...
En revanche, si l'=E9v=E8nement est keypress ou keydown (mais ni keyup ni
change), tout marche bien !!!

Bref, je n'y comprends rien du tout...
Est-ce que l'=E9v=E8nement "change" peut r=E9ellement =EAtre interrompu ?
Si oui, comment ?

Merci d'avance.

David.

P=2ES. : si vous avez des liens vers une explication de ce mod=E8le, je
suis preneur ;-)

1 réponse

Avatar
Guy
Re-bonjour,

Suite à mon problème de 'onchange', j'ai cherché à comprendre un
peu mieux le DOM du W3C et notamment la gestion des évènements. Je
dois reconnaître que tout n'est pas très clair pour moi...

Si j'essaye de capturer l'évènement 'change' sur une zone input,
j'écris :
document.getElementById("var01").addEventListener("change",monchange,true);

Bonjour,

la propagation d'événements s'applique lorsque des objets sont imbriqués !
ex :

un DOCUMENT contient un FORMulaire qui contient des INPUT ;
tous les trois ont l'événement onKeypress activé; deux problèmes
apparaissent :
1) dans quel sens l'événment sera propagé (doc form input) ou (input
form doc)
2) cet event doit il etre propagé vers les différents traitements ?

voir :
http://www.aidejavascript.com/article144.html

http://developer.mozilla.org/fr/docs/DOM:element.addEventListener
G
ps : dans le cas qui vous occupe, vous voudriez stopper le
fonctionnement normal du navigateur (passage au champs suivant) en
stoppant la propagation de l'événement alors qu ils sont deux
fonctionnements normalement indépendants !
utilisez les classiques gestions d'événements onBlur et onFocus !