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 :

évènement onClick avec Firefox


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut évènement onClick avec Firefox
    Bonjour à tous,

    Voila, j'ai un petit souci. J'ai une page web contenant trois boutons radio et deux zone de saisie. En fonction du bouton radio sélectionné, je doit autoriser ou non la saisie dans tel ou tel zone.

    Voici à quoi ressemble mon code:

    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
     
    // Boutons radio 
    <input type="radio" name="dispense" value="0"  onClick="masque_date('0');"/>
    <input type="radio" name="dispense" value="1"  onClick="masque_date('1');"/>
    <input type="radio" name="dispense" value="2" onClick="masque_date('2');"/>
     
    // Zones de saisie 
    <input type="text" name="datedeb" id="datedeb" maxlenght="10"/>
    <input type="text" name="datefin" id="datefin" maxlenght="10"/>
     
    // Fonction javascript
    function masque_date(typedisp){
    switch(typedisp){
      case '0':
        document.getElementById('datedeb').disabled = true;
        document.getElementById('datedeb').value = "";
        document.getElementById('datedeb').backgroundColor = "#CCCC99";
        document.getElementById('datefin').disabled = true;
        document.getElementById('datefin').value = "";
        document.getElementById('datefin').backgroundColor = "#CCCC99";
        break;
      case '1':
        document.getElementById('datedeb').disabled = false;
        document.getElementById('datedeb').value = "__/__/____";
        document.getElementById('datedeb').backgroundColor = "#FFFFFF";
        document.getElementById('datefin').disabled = false;
        document.getElementById('datefin').value = "__/__/____";
        document.getElementById('datefin').backgroundColor = "#FFFFFF";
        break;
      case '2':
        document.getElementById('datedeb').disabled = false;
        document.getElementById('datedeb').value = "__/__/____";
        document.getElementById('datedeb').backgroundColor = "#FFFFFF";
        document.getElementById('datefin').disabled = true;
        document.getElementById('datefin').value = "";
        document.getElementById('datefin').backgroundColor = "#CCCC99";
        break;
      }
    }
    Le problème est que ce code fonctionne très bien sous IE, mais pas sous FF.
    J'ai consulté un grand nombre de forum, tutoriel et autre, et la seul chose que j'ai compris est que FF ne connait pas l'objet window.event et que par conséquent, il faut lui définir. Est ce que quelqu'un peut me dire comment faire cette définition avec l'évènement onClick?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    un id doit être unique dans la page.
    Or ce n'est pas le cas ici (typedisp).
    Peut-être cette correction suffira-t-elle ...

    A+

  3. #3
    Membre habitué Avatar de DiDieuh
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 111
    Points : 141
    Points
    141
    Par défaut
    Effectivement l'id doit être unique, utilise l'attribut "class" pour gérer tes input.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par DiDieuh Voir le message
    utilise l'attribut "class" pour gérer tes input.

    Effectivement,ça serait mieux, mais ça n'a aucun rapport avec le problème ...

    Par contre c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....style.backgroundColor
    A+

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Exact, c'est une petite erreur de re-copiage manuelle, etant donné que j'utilise deux postes différent et que mon code est sur l'autre poste. Bien vue

    Le backgroundColor fonctionne, même sans le 'style'.

    Mon problème ne porte pas sur la mise en forme de mes zone de texte, mais sur l'évènement.

  6. #6
    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 : 54
    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
    Citation Envoyé par Bugger24 Voir le message
    la seul chose que j'ai compris est que FF ne connait pas l'objet window.event et que par conséquent, il faut lui définir.
    C'est pas faux... ceci dit, il te servirait à quoi l'objet event ???

    Surtout, ça veut dire quoi
    ce code fonctionne très bien sous IE, mais pas sous FF.
    parce qu'en copiant collant le code de ton 1er post, ça marche correctement sur FF

    EDIT : sauf le backgroundColor, bien entendu, qui ne marche pas vraiment bien en dehors de l'objet style...

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Quand je dit que ça ne fonctionne pas, c'est à dire que sous FF, lorsque je sélectionné successivement mes boutons radio, quel qu'il soit, je peut saisir des informations dans mes deux zones de texte, à l'inverse d'IE qui, en fonction du bouton selectionné, m'interdit la saisie

    P.S.: Mea-culpa les amis, encore une erreur de re-copiage, effectivement backgroundColor ne fonctionne pas sans l'objet style

  8. #8
    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 ceci n'est pas une solution
    j'avais trois minutes à perdre, alors j'ai "rangé" un peu oui je jure je vais aller me soigner
    Code javascript : 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
    // Fonction javascript
    function masque_date(typedisp){
       var deb = document.getElementById('datedeb');
       var fin = document.getElementById('datefin');
       var BLANC = "#FFFFFF", COUL = "#CCCC99", FORMAT_DATE = "__/__/____";
       switch(typedisp) {
          case '0':
             deb.disabled = true;
             deb.value = "";
             deb.style.backgroundColor = COUL;
             fin.disabled = true;
             fin.value = "";
             fin.style.backgroundColor = COUL;
             break;
          case '1':
             deb.disabled = false;
             deb.value = FORMAT_DATE;
             deb.style.backgroundColor = BLANC;
             fin.disabled = false;
             fin.value = FORMAT_DATE;
             fin.style.backgroundColor = BLANC;
             break;
          case '2':
             deb.disabled = false;
             deb.value = FORMAT_DATE;
             deb.style.backgroundColor = BLANC;
             fin.disabled = true;
             fin.value = "";
             fin.style.backgroundColor = COUL;
             break;
       }
    }
    ...et en passant il y a aussi cette petite erreur (peut-être simplement mauvaise recopie...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="datefin" id="datefin" maxlenght="10"/>

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Merci pour cette interlude syntaxique RomainVALERI
    J'ai modifié mon code avec les changements que tu y a apporté

    Par contre mon problème de départ persiste et j'arrive pas à m'en défaire. Je ne comprend pas pourquoi ce code ne fonctionne pas chez moi avec FF, alors que plusieurs personnes de ce forum l'on testé et ça fonctionne , je sèche ...

  10. #10
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    J'ai envie de dire une bêtise mais le Javascript est activé sur votre FF ?

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    C'est une remarque judicieuse , mais je viens de vérifié et le javascript est bien activé.

  12. #12
    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 : 54
    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
    Un problème de cache peut-être
    Tu as essayé de recharger ta page avec F5 (voire CTRL+F5) ?

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Oui, j'ai pris l'habitude de toujours recharger mes pages en développement via F5

  14. #14
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Vous passez par un outil de développement quelconque ?
    Sinon je ne vois plus grand chose:

    - Vider les fichiers temporaires via Outils de FF même si le F5 et surtout Ctrl+F5 auraient dû faire en sorte de régler ce souci.

    - Testez-vous la bonne page ?

    C'est bête comme question mais ça m'est déjà arrivé.

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    En complément de tous ça : peux-tu refaire un copié/collé de ta version actuelle (il arrive aussi qu'en faisant des corrections on ajoute de nouvelles erreurs )

    A+

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    J'utilise DreamWeaver 8.0 pour le développement.

    Voici le code source actuel, qui pose problème :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    // Bouton radio
    <input type="radio" name="dispense" value="0" onClick="masque_date('0');"/>
    <input type="radio" name="dispense" value="1" onClick="masque_date('1');"/>
    <input type="radio" name="dispense" value="2" onClick="masque_date('2');"/>
     
    // Zone de saisie
    <input type="text" name="datedeb" id="datedeb" maxlength="10"/>
    <input type="text" name="datefin" id="datefin" maxlength="10"/>
     
    // Fonction Javascript
    function masque_date(typedisp){
      alert("Début de la fonction 'masque_date().'");
     
      var deb = document.getElementById('datedeb');
      var fin = document.getElementById('datefin');
      var BLANC = "#FFFFFF", COUL = "#CCCC99", FORMAT_DATE = "__/__/____";
      alert("Fin de déclaration des variables.");
     
      alert("deb = "+deb);
      alert("fin = "+fin);
      alert("BLANC = "+BLANC);
      alert("COUL = "+COUL);
      alert("FORMAT_DATE = "+FORMAT_DATE);
      alert("Fin du controle des variables.");
     
      switch(typedisp){
        case '0':
          alert("Cas de non dispense.");
          deb.disabled = true;
          deb.value = "";
          deb.style.backgroundColor = COUL;
          fin.disabled = true;
          fin.value = "";
          fin.style.backgroundColor = COUL;
          alert("Fin de traitement.");
          break;
     
        case '1':
          alert("Cas de dispense temporaire.");
          deb.disabled = false;
          deb.value = FORMAT_DATE;
          deb.style.backgroundColor = BLANC;
          fin.disabled = false;
          fin.value = FORMAT_DATE;
          fin.style.backgroundColor = BLANC;
          alert("Fin de traitement.");
          break;
     
        case '2':
          alert("Cas de dispense définitive.");
          deb.disabled = false;
          deb.value = FORMAT_DATE;
          deb.style.backgroundColor = BLANC;
          fin.disabled = true;
          fin.value = "";
          fin.style.backgroundColor = COUL;
          alert("Fin de traitement.");
          break;
        }
    }
    En prime, je vous ai même laissé les alerte pour le controle du déroulement de la fonction. D'ailleur, je viens de me rendre compte que sous FF ma variable 'deb' a pour valeur null, alors que sous IE elle a pour valeur [objet]. Pensez vous que c'est normal ?

  17. #17
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Je me sens bête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Zone de saisie
    <input type="text" name="datedeb" id="datedeb" maxlength="10"/>
    <input type="text" name="datefin" id="datefin" maxlength="10"/>
     
    // Fonction Javascript
    function masque_date(typedisp){
      alert("Début de la fonction 'masque_date().'");
    Le code HTML et le code Javascript sont bien dans leur "canevas" respectif ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    maPage.html //Pour le html
     
    monScript.js /* ou  */ <script></script> //Pour le JS

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Les pages web sont construites d'une manière assé bizard.
    Pour chaque page j'ai un fichier .tpl (template) qui contient le code HTML, et un fichier .php qui contient tous les traitements php. Je sait qu'au niveau de l'écriture ce n'est pas tres jolie, mais dans mon cas je n'ai pas d'autre choix que de mettre le code js à la fin de ma page php, avec évidement mes balises <script type="text/javascript"></script>.
    La construction de la page s'effectue dans la page php, grâce à l'appel des différents template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    require_once('template/haut.tpl');
    require_once('template/maPage.tpl');
    require_once('template/bas.tpl');

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Du coup, ce qu'il faudrait que tu nous montres, c'est l'intégralité de la page générée ...

    A+

  20. #20
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2007
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Pour des raisons de sécu, je ne peut pas vous montré l'intégralité de ma page.
    Par contre ne vous prenez plus la tête, j'ai trouvé mon erreur et mon code fonctionne.

    Dans le code réel, au niveau de mes balises input, j'ai oublié de spécifié l'attribut id, chose que je n'oublie jamais en règle générale, pour preuve que dans le code que je vous ai fourni qui était recopié à la main l'id est spécifié . IE étant moin rigoureux que FF, celui-ci fait l'amalgame entre les attribut name et id.
    Comme quoi y vaut mieux utilisé FF.

    Maintenant, je vais pouvoir me fabriqué une corde avec mes lassé pour me pendre, et vous pouvez venir me lincher en place publique à l'aide de branche d'orties.

    Merci à tous pour votre patience.

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

Discussions similaires

  1. [Dojo] Attacher une fonction à l'événement onClick avec dom-attr.set()
    Par Gueknow dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 17/10/2014, 17h12
  2. Compatibilité OnClick avec Firefox
    Par nathanh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/12/2012, 18h59
  3. Ajouter un évènement onclick avec un argument au callback
    Par _jey_ dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 17/07/2009, 15h24
  4. onclick avec firefox
    Par elebora dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/05/2009, 14h04
  5. évènement onclick avec php
    Par canary dans le forum Langage
    Réponses: 5
    Dernier message: 25/03/2009, 23h09

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