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 :

Activer ou désactiver un bouton en javascript sous firefox


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 584
    Points : 142
    Points
    142
    Par défaut Activer ou désactiver un bouton en javascript sous firefox
    Bonjour à tous.

    Je reviens avec encore un truc qui paraît simple, et que je n'arrive pas à faire marcher :

    Dans ma page Web, j'ai un formulaire qui contient cette ligne :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                  <td id='bouton8'>
                  <td><input type='button' name='H' value='8' onclick='executer(8)' disabled=true>
    Et à un certain moment, je déclenche une routine javascript qui contient ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        document.getElementsByName('H').disabled=false;
    		alert(document.getElementsByName('H').disabled);
    Or, quand je déclenche la routine, j'ai bien le message "false" qui apparait, mais le bouton ne fonctionne pas, et la console de "Examiner l'élément" me dit que le bouton est "disabled".

    Je n'ai plus d'idée, c'est pourquoi je me tourne vers vous.

    A vot' bon cœur !

    AMIcalement.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    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 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Salut,

    ça ressemble à un problème de cache avéré avec ffx; vide et retente...

  3. #3
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Citation Envoyé par L'AMI Yves Voir le message
    Je n'ai plus d'idée
    Pourquoi s'arrêter à un seul affichage ?

    Il faut tenter au hasard :
    - Afficher la valeur de disabled avant modification.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alert(document.getElementsByName('H').disabled);
    document.getElementsByName('H').disabled=false;
    alert(document.getElementsByName('H').disabled);
    Le premier alert devrait afficher "undefined".
    Etrange, non ?

    - Vérifier que l'objet ramené est bien le bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    alert(document.getElementsByName('H'));
    alert(document.getElementsByName('H').disabled);
    document.getElementsByName('H').disabled=false;
    alert(document.getElementsByName('H').disabled);
    Le premier alert devrait afficher un NodeList, ce qui ne correspond visiblement pas au bouton.

    Il faut ensuite vérifier getElementsByName dans une documentation.
    Même si on n'a pas fait attention au fait qu'il y a un "s" à "Elements", on finit forcément par comprendre que la fonction ne ramène pas directement/uniquement le premier élément ayant un nom donné.

    La solution est donc : document.getElementsByName('H')[0].disabled=false;

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    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 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Oui, Loralina, je n'avais pas fait attention à la méthode DOM utilisée;

    N'empêche que Firefox ne réinitialise pas forcément le bouton si on actualise, alors que Chrome, par exemple, le fait;

  5. #5
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 584
    Points : 142
    Points
    142
    Par défaut
    Eh bien Loralina avait raison. J'avais pourtant bien vérifié la doc, et j'avais bien vu que getElementsByName ramenait une liste, mais je pensais que ça ferait pareil si la liste ne contenait qu'un seul élément (ce dont je me suis assuré). et je me sentais confirmé dans cette conviction par le fait qu'il ne disait rien quand je l'interrogeais sur une propriété.

    Et pourtant, vérification faite, il fallait bien préciser getElementsByName('H')[0] : ça marche.

    Ça ne me parait pas tout à fait logique... Mais bon, j'ai la solution : MERCI !

    AMIcalement.

  6. #6
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    J'attire l'attention sur la remarque de javatwister :
    Il y a une persistance plutôt indésirable de Firefox dans certains cas (au moins un !) quand on rafraîchit.
    Voici un exemple :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="button" disabled>
    <script>
    window.onmousedown=function(){document.getElementsByTagName("input")[0].disabled=false;}
    </script>
    Si on clique dans la page pour activer le bouton, alors l'attribut ne revient pas si on rafraîchit.
    Il sera peut-être requis de spécifier également le disabled=true à l'initialisation en js.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. QPushButton : activer et désactiver plusieurs boutons
    Par walase dans le forum Débuter
    Réponses: 2
    Dernier message: 24/04/2014, 20h02
  2. [HTML 4.0] Lien sur bouton sans javascript sous IE.
    Par philou73 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 15/09/2009, 11h40
  3. [js]bouton non opérationnel sous firefox
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/01/2007, 08h45
  4. désactiver un bouton en Javascript
    Par michaelbob dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/05/2005, 15h35

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