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 + OnFocus


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut DOM + OnFocus
    Bonjour à tous,

    Je rencontre actuellement un problème.

    J'explique la situation, car c'est assez compliqué.

    La page contient :
    - un formulaire, avec plusieurs champ (Text, Textarea, Select).
    - une fonction javascript


    La fonction javascript est appelé dans toutes les pages, elle controle tout les champs, si la classe du champ est "TextSTM" alors ce champ aura plusieurs déclencheurs (OnMouseOver, OnMouseOut, OnFocus, OnBlur, OnClick).

    Pour ce faire, j'utilise getElementsByTagName('input') et une boucle sur les éléments.

    Par contre, certains champs text de mon formulaire, possède déjà une action sur le OnFocus (Recherche de ville en ajax).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TDS=document.getElementsByTagName('INPUT');
     
    for(i=0,Nombre=TDS.length;i<Nombre;i++){
      if(TDS[i].className=='TextSTM'){
       TDS[i].onfocus=function() {
        this.className='TextSTMOM';
       };
     }
    }
    Comment faire pour que le champ text en question garde sa fonction sur OnFocus, ET qu'il ajoute ce que fait le code ci-dessus ?

    En gros, ajouter une autre fonction au "OnFocus".

    Si vous avez toujours pas compris : Ajouter l'équivalent d'un 2 ème OnFocus au champ.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    >>> utiliser attachEvent (pour IE) ou addEventListener (pour les autres) ^^

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut,
    Il y a deux possibilités :
    La plus propre : utiliser attachEvent et addEventListener;

    La moins propre : tester si une fonction est déjà attachée à l'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(typeof this.onfocus == Function){
        temp = this.onfocus
    }
    this.onfocus = function(){
        // ton nouveau code
        temp;
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Ah tiens oui je n'avais pas pensé à cette solution ^^
    Mais est-ce que ce ne serait pas plutôt :
    Citation Envoyé par Bovino Voir le message
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var temp = function() {};
    if(typeof this.onfocus == Function){
        temp = this.onfocus
    }
    this.onfocus = function(){
        // ton nouveau code
        temp();
    }
    ...non ?

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Tout d'abord, merci pour ta réponse,

    Je t'avoue que j'ai déjà essayé ça, et le problème c'est que tout est géré en dom...

    Alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    TDS=document.getElementsByTagName('INPUT');
     
    for(i=0,Nombre=TDS.length;i<Nombre;i++){
     
     function OnBlur(){
       this.className='TextSTM';
     }
     
     TDS[i].attachEvent("onblur", OnBlur);
    }

    ça ne fonctionne pas apparement ...

    Peux-tu m'éclaircir?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Désolé, j'ai vu la 2 ème réponse trop tard !

    Il faut noté que plusieurs input peuvent avoir un "OnFocus" déjà inséré... et j'ai l'impression qu'il réécrase la fonction...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <INPUT TYPE="text" CLASS="TextSTM" ONFOCUS="alert('test');">
    <INPUT TYPE="text" CLASS="TextSTM" ONFOCUS="alert('test2');">
    <INPUT TYPE="text" CLASS="TextSTM" ONFOCUS="alert('test3');">
    <INPUT TYPE="text" CLASS="TextSTM">

    Ma fonction veut ajouter : this.className='TextSTMOM'; sur les 3 input ... dans une boucle

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    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
     for(i=0,Nombre=TDS.length;i<Nombre;i++){
      if(TDS[i].className=='TextSTM'){
       TDS[i].onfocus=function() {
        this.className='TextSTMOM';
       };
     
       if(TDS[i].onblur==null){
        TDS[i].onblur=function() {
         this.className='TextSTM';
        };
       }
       else{
        function OnBlur(event){
         this.className='TextSTM';
        }
     
    	TDS[i].attachEvent("onblur", OnBlur);
       }
    }
    c'est ma fonction actuelle

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Désolé pour le multi-post, mais c'est assez urgent, pour un intranet, si quelqu'un pouvait me dire comment faire !

    Merci d'avance

Discussions similaires

  1. [DOM] DOM onBlur onFocus CSS
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 11/06/2008, 11h37
  2. XML DOM et gros fichiers
    Par Manu_Just dans le forum APIs
    Réponses: 4
    Dernier message: 28/03/2003, 09h50
  3. [DOM/SAX]Choix...
    Par miss8 dans le forum APIs
    Réponses: 4
    Dernier message: 17/03/2003, 18h37
  4. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53
  5. Réponses: 3
    Dernier message: 04/09/2002, 09h42

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