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 :

[IE]checkbox.checked = false qui n'est pris en compte que si on clique dans la page


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut [IE]checkbox.checked = false qui n'est pris en compte que si on clique dans la page
    Bonjour,

    J'ai un petit bug un peu étrange, qui n'apparaît que sous IE et pas sous Firefox.

    Dans une <table> j'ai toute une série de checkbox, et je souhaite que lorsque l'on en coche une, ce soit la seule qui soit cochée; si une autre était cochée précédement elle sera décochée. Je précise qu'on est dans une page ASP.Net mais à ce stade ça ne devrait pas avoir d'influence.

    Voilà ma fonction (qui prend en paramètres l'ID de la checkbox qui a été cochée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function verifCheckBoxes(checkBoxCochee)
    {
        var loop = document.getElementById("Resultat_Gauche").getElementsByTagName("*");
        for (var i = 0; i < loop.length; i++)
        {
            if (loop[i].type == "checkbox" && loop[i].id != checkBoxCochee)
                loop[i].checked = false;
        }
    }
    Le problème est le suivant : sous IE (7), lorsque l'on coche une checkbox, la dernière checkbox cochée RESTE cochée, il faut cliquer quelque part dans la page pour que le coche disparaisse. Le navigateur se comporte comme s'il avait bien enregistrée que check était passé à false, mais ne l'appliquait visuellement que si l'utilisateur se manifeste.

    Est-ce que c'est un problème connu?

  2. #2
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function verifCheckBoxes(checkBoxCochee) {  var loop = document.getElementById("Resultat_Gauche").getElementsByTagName("*"); for (var i = 0; i < loop.length; i++)  {  if (loop[i].type == "checkbox" && loop[i].id != checkBoxCochee)  loop[i].checked = false;
    document.body.focus(); } }

    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var loop = document.getElementById("Resultat_Gauche").getElementsByTagName("input");
    serait plus rapide
    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 !

  3. #3
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    ...n'a rien changé.

    Par contre j'ai remplacé l'attribut des checkbox "onchange" par "onclick" et maintenant ça fonctionne bien sous IE comme sous Firefox.

    Visiblement c'est un problème connu sous IE depuis longtemps qui n'a jamais été corrigé.

  4. #4
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    le problème du onchange c'est qui'l faut parfois l'assortir d'un setTimeout ...
    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 !

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    J'ai rencontré moi aussi le problème du "onChange" avec les checkbox (sous IE uniquement), en fait l'évènement n'est pris en compte que lorsque la checkbox perd le focus.

    Pour résoudre ce problème efficacement, j'ai trouvé cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" onChange="myCallBack();" onClick="fireEvent('onchange');" />

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

Discussions similaires

  1. [MySQL] Checkbox checked si l'id est dans la base
    Par kyuuse1 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 16/03/2013, 00h27
  2. Réponses: 1
    Dernier message: 22/02/2010, 11h58
  3. Réponses: 8
    Dernier message: 01/08/2009, 16h31
  4. Réponses: 3
    Dernier message: 15/05/2009, 22h17
  5. input est pris en compte, input:focus non
    Par baggie dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 21/04/2009, 16h31

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