2013-04-15 5 views
0

J'ai quelques cases à cocher. Je définis et réinitialise les valeurs par défaut des cases à cocher avec la fonction .prop(), basée sur une réponse JSON (chargement des données via des requêtes ajax). Le problème est que, apparemment, ils ne changent pas ce comportement, si je les change manuellement. Je ne peux pas passer la valeur des cases à cocher via $ ('# checkbox: checked'). Val(), un journal de console dit 'non défini'. Est-ce dû à la fonction .prop()? Comment puis-je obtenir la valeur des cases cochées?Case à cocher est cochée, mais: cochée ne fonctionne pas

Si vous avez besoin de plus d'informations, je me ferai un plaisir de les fournir. Voici un code:

if (json.event.public_visible == 1) { 
    $('#event_public_visible').prop('checked', true); 
} else { 
    $('#event_public_visible').prop('checked', false); 
} 

if (json.event.package_event == 1) { 
    $('#event_package_only').prop('checked', true); 
} else { 
    $('#event_package_only').prop('checked', false); 
} 

Mise à jour: plus de code

var editEvent = function() { 
    if ($('#event_public_visible').is(':checked')) { 
    console.log('test'); 
    } 
    formData = { 
    // ... other fields 
    event_package_only: $('#event_package_only :checked').val(), 
    event_public_visible: $('#event_public_visible :checked').val(), 
    // ... more fields 
    }; 

    $.ajax({ 
    url: base_url + "admin/events/editAsync", 
    type: "POST", 
    data: formData, 
    dataType: "json", 
    success: function (json) { 
     // success handling 
    } 
    }); 
}; 
+2

Cela devrait fonctionner - afficher le JavaScript en question, le code qui essaie d'utiliser ': checked'. – Pointy

+2

Notez également qu'il devrait être '$ ('# checkbox-id: checked'). Val()', sans espace avant le ': checked'. – Pointy

+3

avez-vous essayé .is (': checked')? – alix

Répondre

1

vous définissez une propriété sur les éléments avec un ID de « event_public_visible » et « event_package_only », puis en essayant de lire à partir d'un élément d'ID 'checkbox'.

Vouliez-vous dire?

$('[type=checkbox]:checked').val() 

peut le voir travailler ici:

http://jsfiddle.net/vRba3/

+0

la 'case à cocher' était juste un exemple :) désolé pour l'écriture confuzzling il –

+1

Ensuite, il est probable que votre espace avant le: sélecteur vérifié, retirez-le. – MasNotsram

+0

yup, cela a fonctionné, merci pour vos efforts :) –

2

Essayez ceci: $('#event_public_visible:checked').val() et $('#event_public_visible:checked').val()

Vous pouvez essayer: ('#event_public_visible:checked').length ? $('#event_public_visible:checked').val() : '';

Exemple: http://jsfiddle.net/infernalbadger/SfcjG/

+1

C'était l'espace avant le ': vérifié'. Merci pour votre réponse, cependant :) –

+0

De rien. – Bagata

Questions connexes