92 votes

Vérifier si la case à cocher n'est PAS cochée au moment du clic - jQuery

Je veux vérifier si une case à cocher vient d'être décochée, lorsqu'un utilisateur clique dessus. La raison en est que je veux faire une validation lorsqu'un utilisateur décoche une case à cocher. Parce qu'au moins une case à cocher doit être cochée. Donc, s'il décoche la dernière, elle se recoche automatiquement.

Avec jQuery, je peux facilement savoir s'il est coché ou non :

$('#check1').click(function() {
    if($(this).is(':checked'))
        alert('checked');
    else
        alert('unchecked');
});

Mais en fait, je veux seulement avoir une instruction if qui vérifie si une case à cocher vient d'être décochée.

J'ai donc pensé que je pourrais le faire avec le code suivant :

$('#check2').click(function() {
    if($(this).not(':checked'))
        alert('unchecked');
    else
        alert('checked');
});

Mais le message "non vérifié" s'affichera toujours. Ce n'est pas vraiment ce que j'attendais...

démo : http://jsfiddle.net/tVM5H/

Donc, éventuellement, j'ai besoin de quelque chose comme :

$('#check2').click(function() {
    if($(this).not(':checked')) {
        // Got unchecked, so something!!!
    }
});

Mais de toute évidence, cela ne fonctionne pas. Je ne veux pas utiliser le premier exemple, car j'aurais alors une instruction "else" inutile alors que je n'ai besoin que d'une instruction "if".

Alors premièrement, est-ce que c'est un bug de JQuery ? Parce que pour moi, c'est un comportement inattendu. Et deuxièmement, quelqu'un a-t-il une idée d'une bonne alternative ?

181voto

antyrat Points 14294

Essayez ça :

if(!$(this).is(':checked'))

Démonstration

62voto

chris_code Points 1014

La réponse déjà postée fonctionnera. Si vous voulez utiliser le jQuery :not vous pouvez faire ceci :

if ($(this).is(':not(:checked)'))

ou

if ($(this).attr('checked') == false)

7voto

TheZ Points 2553

JQuery pour vérifier si l'on est coché ? Vraiment ?

if(!this.checked) {

N'utilisez pas un bazooka pour faire le travail d'un rasoir.

6voto

Nanhe Kumar Points 2207
$(document).ready(function() {
        $("#check1").click(function() {
            var checked = $(this).is(':checked');
            if (checked) {
                alert('checked');
            } else {
                alert('unchecked');
            }
        });
    });

3voto

Chandresh Points 351
<script type="text/javascript">

 if(jQuery('input[id=input_id]').is(':checked')){
  // Your Statment
 }else{
  // Your Statment
 }

 OR

 if(jQuery('input[name=input_name]').is(':checked')){
  // Your Statment
 }else{
  // Your Statment
 }

</script>

Code extrait d'ici : http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html

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