IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Ajouter un event � une class


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    72
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 72
    Par d�faut [DOM] Ajouter un event � une class
    Bonjour,

    alors voil�, j'aimerais faire le truc suivant: avoir pour une page qui a une entry form, que tous les champs r�agissent � la m�me fonction lors d'un onFocus.

    j'ai bien sur la solution de mettre pour tous les <input> un onFocus="gotFocus();", mais je voudrais savoir s'il n'y a pas moyen de mettre l'event dans une class ? et que tous les <input> de la page ai l'event onFocus d�j� d�clar� ?

    merci

  2. #2
    Expert confirm�
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par d�faut
    mais je voudrais savoir s'il n'y a pas moyen de mettre l'event dans une class ? et que tous les <input> de la page ai l'event onFocus d�j� d�clar� ?
    -un �v�nement sur une classe
    -que les input aient l'�v�nement on focus d�j� d�clar�

    Que veux-tu faire ??

  3. #3
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    mettre dynamiquement une fonction � tous les elements dans leur onfocus sur le onload de la page ...
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    72
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 72
    Par d�faut
    Voil�, c'est �a.

    Donc, j'ai une form avec 10 <input>.

    je veux que pour chaque input, quand on est dedans, un border apparait, et disparait quand on sort du champ.

    je l'ai fait "facilement" avec un onFocus="gotFocus(this)" pour mettre le border et un onBlur="lostFocus(this)" pour le retirer.

    les fonctions gotFocus et lostFocus �tant d�clar�s avant biensur

    mais, je dois d�clarer les appels pour les 10 champs.

    je me demandais si je ne pourrais pas d�clarer mes champs <input class="avecBorder"> et que cette class ai d�j� les appels pour les onBlur et onFocus.

  5. #5
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Salut,

    Je vois deux solutions � ton probl�me

    1) Pure CSS avec

    input.avecBorder:focus { border: 1px solid red; }

    ce qui ne fonctionne pas sur IE6 sauf erreur

    2) Javascript, comme l'a dit SpaceFrog, ce qui ressemble � ceci

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function initFocus() {
      var fields = document.getElementsByTagName('input');
      for(var i=0;i<fields.length;i++) {
        // tester qu'il s'agit bien d'un input avec la classe avecBorder ici
        fields[i].onfocus = gotFocus; // addEventListener serait meilleur aujourd'hui
        fields[i].onblur = lostFocus;
      }
    }
     
    ...
    <body onload='initFocus()'>
    L'approche javascript pose quelque probl�mes de compatibilit� entre les
    navigateurs qu'il faut g�rer. Je te sugg�re de lire ceci

    http://gilles.chagnon.free.fr/cours/...venements.html

  6. #6
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    L'approche javascript pose quelque probl�mes de compatibilit� entre les
    navigateurs qu'il faut g�rer.
    heu non pas de soucis de compatibilit� si tu utilise cette syntaxe::




    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    fields[i].onfocus = function(){gotFocus()};
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  7. #7
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Oui, SpaceFrog, jusque l�, pas de soucis. Mais c'est pour connaitre
    le champs sur lequel la souris a pass� que cela devient incompatible

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    72
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 72
    Par d�faut
    Hello,

    j'aime bien la soluce de la fonction appel�e dans le onload.

    mais comme vous le dites, comment savoir le champs appel� � ce moment l� ?

    voil� mes fonctions

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function gotFocus(obj) {
    	saved = obj.style.borderWidth;
    	obj.style.borderWidth='2px';
    	obj.style.borderColor='black';
    }
    function lostFocus(obj) {
    	obj.style.borderWidth='';
    	obj.style.borderColor='';
    }
    il faut leur donner l'object en cours (que je passe par "this").

    j'essaie les possibilit�s suivantes

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    fields[i].onfocus = gotFocus;
    fields[i].onblur = lostFocus;
     
    fields[i].onfocus = gotFocus(fields[i]);
    fields[i].onblur = lostFocus(fields[i]);
    sans trop de succ�s....

  9. #9
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    ???
    Mais c'est pour connaitre
    le champs sur lequel la souris a pass� que cela devient incompatible
    Lapin compris ...
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  10. #10
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Salut,

    Il te faut lire le lien que j'ai donn� plus haut. En particulier ce qui concerne
    l'objet event

    L'objet event te permet de connaitre l'�l�ment DOM qui a d�clench� l'�v�nement

    event.target pour les navigateurs dignes de ce nom
    et event.srcElement pour IE

    donc l'�l�ment qui t'int�resse s'obtient ainsi:

    var e = event.target || event.srcElement;

    Mais ce n'est pas fini, il faut obtenir l'objet event. A nouveau IE est diff�rent
    il utilise window.event (en global pour le dernier �v�nement) alors que les
    autres navigateur re�oivent en param�tre l'�v�nement.

    Dans ton cas tes gestionnaires d'�v�nements devraient ressembler � ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    function gotFocus(event) {
        event = event || window.event;
        var e = event.target || event.srcElement;
        e.style.border = "1px solid red";
    }

  11. #11
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    heu et passer this en argumant de focntion ne suffit pas ?
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  12. #12
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Oui, je suis preneur si tu sais comment le faire avec une callback �v�nementielle.

  13. #13
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    un callback evenementiel ???

    heu �a fait partie des mammif�res �a ???

    tu n'aurais pas un exemple, parceque l� tu me parles chinois ...
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  14. #14
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Oui les exemples donn�e dans ce post sont des fonctions callback li�e
    � des �v�nement, par exemple:

    fields[i].onfocus = gotFocus;

    gotFocus est une r�f�rence � une fonction que l'on assigne � un �v�nement.
    la fonction est appel�e par le gestionnaire d'�v�nement lorsque l'�v�nement
    ce produit.

    Mais peu importe comment on appelle �a. Le probl�me c'est que les param�tres
    transmis � la fonction sont ceux que le gestionnaire d'�v�nement veut bien passer.

    A ma connaissance, tu ne peux pas passer le 'this' dans cette notation.

    le this peut �tre pass� dans ce genre de notation:

    <a id='truc' href='...' onclick='toto(this);'>

    mais pas quand tu assigne l'�v�nement ainsi:

    document.getElementById('truc').onclick = toto;

  15. #15
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    ????
    autant utiliser la notation toto(this) alors non ?
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  16. #16
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    72
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 72
    Par d�faut
    Spacefrog,

    si je voulais utiliser "this", cela veut dire que je dois mettre mes fonction onfocus et onblur dans chaque tag input.

    alors que mon but est de ne pas le faire individuellement par tag, mais que cela soit automatique.

    T

  17. #17
    Expert confirm�
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Ao�t 2003
    Messages
    3 684
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activit� : danseur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 3 684
    Par d�faut
    sans doute rien compris � ce que tu veux;

    pourquoi ce type de code ne conviendrait pas?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <style type="text/css">
     
     
    #champs input {
    margin-top:5px;
    border:1px solid;
    }
     
     
    </style>
     
    </head>
     
    <body>
     
     
     
    <form id="f" action="">
    	<div id="champs">
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" /><br />
    		<input type="text" />
    	</div>
    </form>
     
    <script type="text/javascript">
     
     
     
    var ch=document.getElementById("f").elements;
     
    for(i=0;i!=ch.length;i++){
    	ch[i].onfocus=function(){this.style.borderWidth="4px"}
    	ch[i].onblur=function(){this.style.borderWidth="1px"}
    }
     
    </script>

  18. #18
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Citation Envoy� par javatwister
    sans doute rien compris � ce que tu veux;
    Pour quelqu'un qui n'a rien compris tu t'en sors bien

    Je pense que ta solution est id�ale.

  19. #19
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Ben c'est pas ce que l'on dit depuis le d�but �a ?
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  20. #20
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Citation Envoy� par SpaceFrog
    Ben c'est pas ce que l'on dit depuis le d�but �a ?
    En partie. Tu as donn� d�s ton premier post (m�me si c'est pas d�taill�) la solution pour appliquer une m�me fonction � tous les champs.

    Mais ce que javatwister apporte de concret en plus, c'est une mani�re simple
    d'agir sur le champ input qui a appel� la fonction.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. WCF - Ajout Reference sur une Class Library
    Par fix105 dans le forum Windows Communication Foundation
    R�ponses: 1
    Dernier message: 20/03/2009, 12h20
  2. Ajout de m�thodse � une classe sans d�rivation
    Par plxpy dans le forum Biblioth�ques tierces
    R�ponses: 5
    Dernier message: 11/01/2009, 21h14
  3. comment ajouter des m�thodes � une classe lors Runtime?
    Par revever dans le forum Collection et Stream
    R�ponses: 2
    Dernier message: 31/03/2008, 13h53
  4. [DOM] Ajout dynamique d'une ligne dans un <table>
    Par Alzelus dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 23/05/2007, 17h05
  5. R�ponses: 2
    Dernier message: 20/04/2007, 01h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo