11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour/ bonsoir,

A partir d'un lien, je souhaite sélectionner/ dé-sélectionner des checkbox:
$('#cocheText').live('click',function(){
        var cases = $('#rowsDeleteForm').find(':checkbox');
        if(cases.checked){
            cases.attr('checked', false);
            $('#cocheText').html('Cocher tout')
        }
        else{
            cases.attr('checked', true);
            $('#cocheText').html('Tout décocher')
        }
        return false;
    });

Seulement, la première condition ne passe pas, alors que la deuxième est fonctionnelle. Je ne comprends pas...
Merci,
Modifié par albius (06 Feb 2012 - 17:48)
Déjà, à quel moment est-ce que tu parcours tes checkbox pour vérifier s'il est checked ou non ? Il te faudrait un each sur tes checkbox, du genre

cases.each(function(){...});


Puis tu testes sur le checkbox en cours

if $(this).attr('checked') {...}


Ensuite,

albius a écrit :
if(cases.checked)[/code]


.checked ?

Tu veux dire
 if (cases.attr('checked')) // Si la case a l'attribut coché


Non ?
Ta condition est sensé vérifier quoi ?

if(cases.checked){

Si ils sont tous coché ?

Je viens de dev ça il y a 5 minutes pour une messagerie privée (selectionner/deselectionner pour pouvoir tout supprimer)


        // sélectionne ou déselectionne tout
        $('#messagerieSelectAll').click(function(e) {
            e.preventDefault();

            if ($(this).attr('data-select') == 'select')
            {
                $(this).html('Tout désélectionner').attr('data-select','unselect');

                $('input.messagerieAction').each(function(i) {
                    $(this).attr('checked',true);
                });
            }
            else
            {
                $(this).html('Tout sélectionner').attr('data-select','select');

                $('input.messagerieAction').each(function(i) {
                    $(this).attr('checked',false);
                });
            }
        });


avec le HTML

<a href="#" id="messagerieSelectAll" data-select="select">Selectionner tout</a>


Et chaque case à cocher contient la class "messagerieAction"
a écrit :
Il te faudrait un each sur tes checkbox, du genre
cases.each(function(){...});

Pas nécessairement Seyu,
var cases = $('#rowsDeleteForm').find(':checkbox'); 

Revient au même (il me semble avoir lu un article à ce propos quelque part...)
Par contre, +1 pour la condition.
Merci pour vos réponses,
Oui tu peux remplacer

$('input.messagerieAction').each(function(i) {

$(this).attr('checked',true);

});


par
$('input.messagerieAction').attr('checked',true);



J'avais d'autres besoins à côté.