689 votes

Obtenir la valeur d'une case à cocher en jQuery

Comment obtenir la valeur d'une case à cocher en jQuery ?

1325voto

Sarfraz Points 168484

Pour obtenir la valeur de l'attribut Value, vous pouvez procéder comme suit :

$("input[type='checkbox']").val();

Ou si vous avez défini un class o id pour ça, vous pouvez :

$('#check_id').val();
$('.check_class').val();

Cependant, cela renverra le même qu'il soit coché ou non, ce qui peut prêter à confusion car le comportement est différent de celui du formulaire soumis.

Pour vérifier si elle est cochée ou non, faites :

if ($('#check_id').is(":checked"))
{
  // it is checked
}

3 votes

Que fait le premier exemple s'il y a plusieurs cases à cocher sur la page ? En fait, on peut l'écrire de manière plus courte $("input:checkbox") . De plus, il semble y avoir une faute de frappe dans le sélecteur de classe...

1 votes

@Jawa : Le premier était juste un exemple pour montrer la syntaxe et merci pour cette faute de frappe.

182 votes

Si j'essaie $($0).val() dans Chrome, et décochez la case, la réponse est "oui" même si elle n'est pas cochée. Mais $($0).is(":checked") renvoie la bonne valeur.

286voto

Alain Tiemblo Points 8884

Ces deux méthodes fonctionnent :

10 votes

.is('checked') n'a pas fonctionné car il devrait être .is(':checked')

0 votes

Merci pour votre réponse. Voici une réponse à l'état de l'art avec la fonction jQuery prop()

68voto

imRcH Points 2078

Essayez cette petite solution :

$("#some_id").attr("checked") ? 1 : 0;

ou

$("#some_id").attr("checked") || 0;

0 votes

Ou !($("#some_id").attr("checked"))

55voto

Reza Points 55

La meilleure façon de récupérer la valeur d'une case à cocher est la suivante

if ( elem.checked ) 
if ( $( elem ).prop( "checked" ) ) 
if ( $( elem ).is( ":checked" ) ) 

comme expliqué dans les documentations officielles sur le site de jQuery. Le reste des méthodes n'a rien à voir avec la fonction propriété de la case à cocher, ils vérifient l'attribut, ce qui signifie qu'ils testent l'état initial de la case à cocher lorsqu'elle a été chargée. Donc, en résumé :

  • Lorsque vous avez l'élément et que vous savez qu'il s'agit d'une case à cocher, vous pouvez simplement lire sa propriété et vous n'aurez pas besoin de jQuery pour cela (c'est-à-dire. elem.checked ) ou vous pouvez utiliser $(elem).prop("checked") si vous souhaitez vous appuyer sur jQuery.
  • Si vous avez besoin de connaître (ou de comparer) la valeur lorsque l'élément a été chargé pour la première fois (c'est-à-dire la valeur par défaut), la manière correcte de procéder est la suivante elem.getAttribute("checked") o elem.prop("defaultChecked") .

Veuillez noter que elem.attr("checked") n'est modifié qu'après la version 1.6.1+ de jQuery pour retourner le même résultat que elem.prop("checked") .

Certaines réponses sont trompeuses ou imprécises. Veuillez vérifier vous-même ci-dessous :

http://api.jquery.com/prop/

1 votes

.is(":checked") y .prop(":checked") fonctionnent de la même manière pour moi avec jQuery 1.10.0.

0 votes

@Josh, vous avez raison, merci ! J'ai mis à jour la réponse pour clarifier pour les futurs lecteurs.

22voto

Nalan M Points 834
$('#checkbox_id').val();
$('#checkbox_id').is(":checked");
$('#checkbox_id:checked').val();

0 votes

Ne fonctionne pas. Vous avez peut-être besoin d'une colonne avant check ':checked'.

14 votes

.val() ne fonctionne pas. Il renvoie "on" sans tenir compte de la vérification.

1 votes

$('#checkbox_id').is(":checked"); renvoie un booléen, exactement ce dont j'avais besoin.

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