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

jQuery Discussion :

Mise à jour de checkbox [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut Mise à jour de checkbox
    Bonjour,

    J'envoie des requêtes ajax pour rafraichir une page web en récupérant un fichier .json.
    Lorsqu'une requêtes ajax à réussie, j’exécute le code suivant pour mettre à jour ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function succcess(jsonObj){
        if(jsonObj.checkbox1 === "ENABLE"){
            $("#checkbox1").attr("checked", true);
        } else {
            $("#checkbox1").removeAttr("checked");    
        }
        $("#inputbox1").val(jsonObj.inputbox);
    }

    Code html de la checkbox :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="checkbox1" type="checkbox" value="1">


    Pour mes tests, j'ai figé la valeur de jsonObj.checkbox1 : il vaut toujours "ENABLE".

    A l'ouverture de ma page .html, une première requête ajax est envoyée : la checkbox est bien cochée.
    Ensuite, si je click sur ma checkbox pour la décocher et que j'appuie sur un bouton qui envoie une requete ajax pour rafraichir ma page, la checkbox n'est pas cochée à la réception du .json.
    => pourtant le code est bien exécuté car #inputbox1 est bien mis à jour.

    Ce que je trouve bizarre, c'est que lorsque je click manuellement sur ma checkbox et que je regarde le code html sous firebug, le code html est toujours (que la checkbox soit cochée ou non) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="checkbox1" type="checkbox" checked="checked" value="1">
    => c'est normal ?


    D'ou peut venir le problème ?

    Merci d'avance

  2. #2
    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
    Billets dans le blog
    20
    Par défaut
    Tu confonds .attr() et .prop(), c'est-à-dire une propriété HTML et une propriété de l'objet JavaScript associé.

    Ton code force la propriété HTML, mais comme des modifications sont survenues au niveau de la propriété JavaScript, elle n'est logiquement pas prise en compte. C'est donc sur la propriété JavaScript qu'il faut agir.
    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

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 854
    Par défaut
    merci ça fonctionne mieux comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function succcess(jsonObj){
        if(jsonObj.checkbox1 === "ENABLE"){
            $("#checkbox1").prop("checked", true).change();
        } else {
            $("#checkbox1").prop("checked", false).change();    
        }
        $("#inputbox1").val(jsonObj.inputbox);
    }
    A noter qu'il faut lancer .change() après modification de la valeur car l’événement n'est pas automatiquement lancé

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/07/2011, 09h56
  2. [AC-2003] Mise à jour checkbox
    Par lucas-18 dans le forum IHM
    Réponses: 4
    Dernier message: 27/02/2011, 20h21
  3. [MySQL] Problème mise à jour checkbox
    Par bipbip2006 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/01/2011, 21h52
  4. [MySQL] Mise à jour mysql avec une checkbox non checké
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/08/2006, 16h45
  5. [VBA Excel]. Pb de mise à jour de UserForm (checkBox)
    Par ExecelMans dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 11h06

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