11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un champ "date" dans un formulaire qui me pose problème.
<input type="text" id="DateTextBox" name="DateTextBox" onblur="alert('ok')" />

Avant, quand le focus de l'élément était perdu, j'avais bien le message 'ok' qui s'affichait.
Mais depuis que j'ai installé le masque de saisie Typecast, le message ne s'affiche plus, autrement dit je n'ai plus accès à l'événement onblur.
J'ai trouvé ce masque de saisie ici : http://typecast.arapehlivanian.com/
Il me semble que le fichier qui pose problème est celui-ci : http://typecast.arapehlivanian.com/typecast_1.4.js
Et la seule ligne qui parle de l'événement onblur est :
node.onblur = Typecast.Behaviours[behaviourName].Stop


Avez-vous une idée ?

Merci d'avance,

Romain
Modifié par rom117 (30 Sep 2011 - 18:09)
Alors j'ai tout simplement commenté la ligne en question, et ça a l'air de marcher, je peux à nouveau accéder au onblur. En espérant que ce que j'ai commenté n'est pas important Smiley rolleyes .
En attendant, résolu !
Bonjour,

Pour donner une explication, je dirais que la fonction associer au onblur dans le html et remplacer par celle du java-script. Faire `node.onblur = machin` revient à remplacer la fonction déjà existante, ce qui explique pourquoi "ok" n'apparais plus.
Pour évité ce problème il faut passer par le gestionnaire d'événement qui permet d'attacher autant de fonction voulu à un événement donné (addEventListener(en) (fr)). Regarde aussi le paragraphe pour ie, le nom de la fonction et son utilisation est différente pour les versions antérieurs à la 9.
Bonjour,

Merci pour l'info et merci pour le lien jo_link_noir, ça m'est et me sera très utile Smiley biggrin .
Alors si j'ai bien compris, je dois remplacer la ligne :
node.onblur = Typecast.Behaviours[behaviourName].Stop;

par :
node.addEventListener("onblur", Typecast.Behaviours[behaviourName].Stop, false);


C'est bien ça ?
Pas tout à fait, regarde bien l'exemple pour ie:
if (el.addEventListener){
  el.addEventListener('click', modifyText, false);
} else if (el.attachEvent){
  el.attachEvent('onclick', modifyText);
}

On vérifie que addEventListener existe
Si oui on l'utilise en indiquant l'évènement sans le "on" devant
Sinon on regarde si el.attachEvent existe (pour ie < 9)
Si oui on l'utilise en indiquant l'évènement (avec le "on" devant cette fois).

Au final ça va ressembler plus à
if (node.addEventListener){
  node.addEventListener('blur', Typecast.Behaviours[behaviourName].Stop, false);
} else if (node.attachEvent){
  node.attachEvent('onblur', Typecast.Behaviours[behaviourName].Stop);
}
Ah zut j'y étais presque !
Merci pour ces explications claires et précises, ça maaaaaaaaaaarche !!!
Ce sujet est donc définitvement résolu Smiley biggrin .

Un grand merci à toi link noir Smiley cligne .

Romain

PS : Question bonus : J'ai beau relire la doc, je comprends pas ce que veux dire le troisième argument...
Modifié par rom117 (30 Sep 2011 - 18:09)