Manipuler les checkbox avec jQuery sous IE

Rédacté le 01/03/2010 WebDev

Tags: , ,

Très récemment, IE m’a posé un léger problème avec sa gestion bien lourdingue des événements, et notamment le change.
J’ai eu besoin d’utiliser les événements sur des checkbox pour réaliser des filtres d’affichage pour Google Maps.
Pour faire simple, voici un bout de code qui fonctionnait parfaitement sur tous les navigateurs (sauf IE, bien entendu …) :

$('input[type=checkbox]').change(filtrer);

« filtrer » étant ma fonction de filtrage des points sur la carte.

Malheureusement, IE (6,7 et 8 ) avait du mal à réagir à cet événement.

Du coup, j’ai du l’y forcer :

$('input[type=checkbox]').click(function(e){
    if($.browser.msie){
        $(this).change();
    }
 });

Ainsi, je force IE à provoquer l’événement et ma fonction « filtrer » est bien appelée :)

En bonus, voici comment cocher et décocher des checkbox avec jQuery :

$('input[type=checkbox]').attr('checked','checked');//cochage
$('input[type=checkbox]').attr('checked','');//décochage

à modifier selon votre page et donc vos sélecteurs :)

7 commentaires to Manipuler les checkbox avec jQuery sous IE

  • Diana dit :

    Bonsoir,
    Ben moi j’ai tout essayé avec mon bout code, IE 8 veut rien savoir et ça commence à me faire bouillir:

    $(« input[name='photos']« ).change(function(){
    if($(this).is(‘:checked’)){$(‘div#photos’).toggleClass(‘cache_me’);}
    else{$(‘div#photos’).toggleClass(‘cache_me’);}
    });

    • Loïc dit :

      Bonjour,
      D’abord, es-tu sûre que ton évènement « change » est bien déclenché ? (un p’tit alert juste après te permettra d’en être sûre).
      Ensuite, je ne sais pas si le toggleClass() est la solution la plus propre. Perso, je serai passé par addClass et removeClass pour être certain de ce que fait mon script.

      As-tu une version en ligne de ta page, où je puisse jeter un oeil ?

  • Diana dit :

    Bien en faites, j’ai tout essayé que, le ToggleClass est l’équivalent du AddClass, removeClass et ça ne change en rien le comportement de IE même si on remplace par click.
    IE c’est comme windows fuez-le ya des navigateurs bien mieux comme FireFox, Opera, Chrome.
    ;)

    • Loïc dit :

      Vérifiez que vous n’ayez pas un erreur ailleurs… (oubli de déclaration d’une variable,etc …)
      Si IE rencontre une erreur JS en cours de page, cela peut empêcher le fonctionnement d’autres JS sur cette même page…

  • Diana dit :

    Je viens de faire des tests.
    http://jsfiddle.net/PyLYg/
    Le toggle ou les addClass, removeClass ne sont aprioris pas adaptés à toutes les situations et le comportement est assez différent d’un browser à l’autre.
    Là j’ai résolu le problème, mais comme vous le dite, IE serait réfractaire à d’autre erreur notamment de script tiers…. Donc je vais vérifier de se coter là car j’ai une piste avec le Debuguer d’IE.

  • Diana dit :

    J’ai effectivement erreur dans IE à cause d’un script tiers dont j’ai signalé le problème.

    Merci encore :)

  • Leave a Reply

    Notifiez-moi des commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.

    Bienvenue sur mon blog.
    Il s'agit avant tout d'une zone de veille pour moi, un lieu où je stocke les astuces qui me serviront à nouveau plus tard.
    Au menu, du PHP, javascript, un peu de CSS et des astuces diverses...