79 votes

Comment écouter quand une case à cocher est cochée en Jquery

J'ai besoin de savoir quand une case à cocher de la page est cochée :

par exemple

<input type="checkbox">

J'ai essayé ceci dans Jquery

$('input type=["checkbox"]').change(function(){
alert('changed');
});

Mais ça n'a pas marché, des idées ?

0 votes

Le problème est que $('input type=["checkbox"]') n'est pas un sélecteur valide. Il devrait être $('input[type=checkbox]') à la place. Ce qui serait encore mieux, ce serait $('input:checkbox') . ;)

139voto

David Thomas Points 111253

Utilisez le change() et l'événement is() test :

$('input:checkbox').change(
    function(){
        if ($(this).is(':checked')) {
            alert('checked');
        }
    });

J'ai remplacé ce qui précède par ce qui suit, en raison de ma dépendance stupide à l'égard de jQuery (dans l'onglet if ) alors que les propriétés DOM seraient tout aussi appropriées, et aussi moins chères à utiliser. Le sélecteur a également été modifié, afin de lui permettre d'être passé, dans les navigateurs qui le supportent, à la propriété DOM document.querySelectorAll() méthode :

$('input[type=checkbox]').change(
    function(){
        if (this.checked) {
            alert('checked');
        }
    });

Pour terminer, la même chose est facilement réalisable en JavaScript :

var checkboxes = document.querySelectorAll('input[type=checkbox]'),
    checkboxArray = Array.from( checkboxes );

function confirmCheck() {
  if (this.checked) {
    alert('checked');
  }
}

checkboxArray.forEach(function(checkbox) {
  checkbox.addEventListener('change', confirmCheck);
});

Références :

23voto

Jasper Points 54859
$('input:checkbox').live('change', function(){
    if($(this).is(':checked')){
        alert('checked');
    } else {
        alert('un-checked');
    }
});

jsfiddle : http://jsfiddle.net/7Zg3x/1/

1 votes

Pourquoi .live ? Pourquoi pas ? .click ?

9 votes

Comme je ne sais pas comment ni quand l'élément d'entrée est ajouté au domaine, l'utilisation de .live() pour les exemples permet de les rendre pertinents même si l'élément est injecté de manière dynamique. D'une manière générale, .live() s'appliquera aux éléments "maintenant et dans le futur" (comme le dit la documentation) et .click() est un raccourci pour .bind('click', function() {}) qui ne s'applique qu'aux éléments déjà présents dans le domaine.

1 votes

@Jasper : live est beaucoup plus lente que la liaison normale, parce que l'événement doit remonter. Il est beaucoup plus logique d'utiliser la méthode change lié directement à l'élément, si celui-ci est statique.

16voto

Shef Points 21595
$('input:checkbox').change(function(){
    if($(this).is(':checked')){
        alert('Checked');
    }
});

Voici une démo

3voto

ShankarSangoli Points 45345

Essayez ceci

$('input:checkbox').change(function(){
   if(this.checked)
      alert('checked');
   else
      alert('not checked');
});

3voto

dan Points 11

Si vous voulez utiliser .on, cela fonctionne

 jQuery('input[type=checkbox]').on('change', function() {
   if (this.checked) {
     console.log('checked');
   }
 });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X