2010-01-14 4 views
2

J'utilise JQuery pour certaines fonctionnalités AJAX. Mais lorsque vous passez la valeur d'une case à cocher, la valeur est affichée, que la case soit cochée ou non. Voici mon code:Utilisation de cases à cocher avec Jquery AJAX

$(document).ready(function(){ 
$('#submitform').click(function(){ 
$.ajax({ 
    type: "POST", 
    url: "abs_newabs_check.asp", 
    data: { allday: $("#allday").val() }, 
    success: callback 
    }); 

}); 
}); 

    function callback(data, status) 
    { 
    $("#ajaxdiv").html(data); 
} 

Qu'est-ce que je fais mal? Toute aide appréciée. Merci.

Répondre

7

Le value de votre case à cocher, accessible par val() correspondra toujours à la propriété value y de l'entrée. Ce qui est toujours défini, quel que soit l'état coché de la case à cocher. Ce que vous voulez vérifier est checked propriété:

{ allday: $('#allday').is(':checked') } 

ou si vous voulez vraiment passer la valeur, quand il est vérifié:

{ allday: $('#allday').is(':checked') ? $('#allday').val() : '' } 
+1

Ce dernier est comment j'ai tendance à traiter les cases à cocher lorsque j'utilise jQuery. – ayaz

+0

Merci beaucoup. Bonne solution, bien décrite. – tonyyeb

2

Les cases à cocher sont de petits bêtis agaçants. Vous devez vérifier si l'attribut "checked" est coché sur la case et si c'est le cas, alors seulement vous voulez appliquer la valeur.

Donc, si vous avez une case à cocher

<input type="checkbox" name="sports" value="soccer" /> 

vous voulez vérifier que l'attribut checked a été mis sur elle

<input type="checkbox" checked="yes" name="sports" value="soccer" /> 

La valeur sera toujours le même, il est l'état qui change

+0

+1 pour bougres peu ennuyeux: D – jrharshath