La case à cocher jQuery renvoie toujours 'indéfini'
Info: jQuery 1.6.0
HTML case:
Première fois que j'ai fait en sorte de jQuery est chargé avec:
if(jQuery) {
alert("loaded");
}
Et c'est le cas, elle est chargée.
Puis immidiately la ligne après que j'utilise:
var returnvalue = jQuery("#mycheckbox").attr("checked");
alert(returnvalue);
Ce, pour une raison quelconque, toujours alertes 'undefined'. Je suis sûr à 100% l'ID existe. J'ai aussi essayé la méthode suivante:
jQuery("#mycheckbox").find('input[type="checkbox"]').each(function(){
alert("foo");
if (jQuery(this).is(":checked"))
ReturnVal = true;
});
Mais ce n'est même pas de pop-up de l'alerte.
Ce que je fais mal? Je suis de loin un jQuery ou Javascript expert, mais cela devrait fonctionner... droit?
Edit:
J'ai essayé:
jQuery(document).ready(function() {
alert(id);
var returnvalue = jQuery("#" . id).prop("checked");
alert(returnvalue);
});
Le alert(id) me donne le bon ID, mais l'alerte(returnvalue) renvoie undefined.
J'ai aussi essayé:
if(jQuery) {
alert("loaded");
}
jQuery(function() {
alert(id);
var returnvalue = jQuery("#" . id).attr("checked");
alert(returnvalue);
});
Même résultat
Edit2:
Après l'utilisation .prop ET en ajoutant l'id avec un " + " au lieu d'un '.' (PHP habitude), il fonctionne. Merci à vous tous pour votre aide!
source d'informationauteur pbond
Vous devez vous connecter pour publier un commentaire.
1.6
ou version ultérieure, utilisezprop()
au lieu deattr()
:C'est parce que si vous n'avez pas prévoir de façon explicite
checked
attribut à l'élément, alors l'attribut estundefined
si la propriété a ses défaut..find()
:Y compris votre code HTML dans la question serait utile.
Essayez ceci:
Mise à jour
Si votre script est en haut de la page, il s'exécute avant le HTML est chargé. Pendant ce temps, attr('checked') n'est pas défini.
En enveloppant le code dans une auto-exécution de la fonction anonyme $(function(){...}), votre code s'exécute après l'HTML charges.
Réponse au commentaire
Votre code:
De l'essayer. que fait-il d'alerte?
La 3ème alerte de dire "il y a de cela de nombreux éléments avec l'id correspondant: 0"?
Utiliser un
.prop
$('#checkbox1').prop('checked')
jQuery 1.6 +Concernant les attributs booléens, considérons un élément du DOM défini par la balise HTML
<input type="checkbox" checked="checked" />
et suppose qu'il est dans une variable JavaScript nommé elem:Selon le W3C formes de spécification, l'objet d'attribut est un attribut booléen, ce qui signifie que la propriété correspondante est true si l'attribut est présent à tous—même si, par exemple, l'attribut n'a pas de valeur ou d'une valeur d'une chaîne vide. Le préféré de la croix-navigateur compatible façon de déterminer si une case est cochée est de vérifier pour un "truthy" sur la valeur de l'élément de propriété à l'aide de l'une des opérations suivantes:
Si l'utilisation de jQuery 1.6, le code
if ( $(elem).attr("checked") )
permettra de récupérer le contenu de l'attribut, ce qui ne change pas tant que la case à cocher est activée et désactivée. Il est destiné uniquement à stocker la valeur par défaut ou la valeur initiale de la propriété checked. Pour conserver en arrière la compatibilité, la.attr()
méthode jQuery 1.6.1+ permettra de récupérer et de mettre à jour la propriété pour vous donc, pas de code pour les attributs de type boolean est nécessaire pour être changé .prop(). Néanmoins, la meilleure façon de récupérer une valeur cochée est avec l'une des options répertoriées ci-dessus. Pour voir comment cela fonctionne dans la dernière jQuery, cochez/décochez la case dans l'exemple ci-dessous.