Case à cocher et JQUERY: "est cochée" toujours FAUX
Le code est ci-dessous et la case est toujours FAUX. Mais sur la page, c'est différent. Il n'est pas cochée ou décochée.
<script type="text/javascript">
$('.cbOzelHastaAdi').unbind('click');
$('.cbOzelHastaAdi').click( function() {
var parentDiv = $(this).parent().get(0);
var cbs = $(parentDiv).find('table input:checkbox');
if($(this).attr("checked") === "true") {
cbs.each(function() { $(this).attr('checked', false); });
}
else{
cbs.each(function() { $(this).attr('checked', true); });
}
})
</script>
source d'informationauteur uzay95
Vous devez vous connecter pour publier un commentaire.
L'un des problèmes est que vous avez eu la
checked
attribut sur la plage entourant la case de tête et de l'étiquette et de la ont été de la liaison d'un gestionnaire d'événement pour la durée, doncchecked
restera toujourschecked
sur la durée.J'ai déplacé les gestionnaires d'événements de la case à cocher à la place et rangé un peu le code. Alors que je ne crois pas qu'il y a un problème dans la construction de vos propres attributs pour les éléments HTML c'est à dire un contrôle de l'attribut sur un élément span (je pense XHTML strict de la validation échoue avec eux), je n'ai pas de savoir si c'est considéré comme une bonne pratique de le faire.
Je vois que vous êtes en utilisant ASP.NET, en fonction de l'ID d'amputation - vous pouvez utiliser côté serveur
<%= myControl.ClientID %>
pour obtenir la déformation d'id pour le rendu dans le code HTML envoyé au client.Exemple de travail ici
EDIT:
En réponse à votre commentaire, vous avez deux options pour résoudre le clientid. Si vous écrivez votre jQuery dans la page aspx, alors il suffit d'utiliser
$('#<%= cbOzelKurumHastasi.ClientID %>')
en place de
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi')
Si vous avez votre jQuery dans un fichier de script externe ensuite, vous pouvez mettre ceci dans votre page aspx
et utiliser cette variable dans votre fichier de script externe
Pour d'autres options, jeter un oeil à cette question et de la réponse - Comment arrêter ASP.NET de changer les id pour utiliser jQuery
J'ai l'habitude de nous .est() des fonctionnalités de jQuery pour vérifier cette
serait-ce parce que vous êtes à la comparaison de la valeur de la propriété checked pour une chaîne plutôt qu'une valeur booléenne et à l'aide de l' === opérateur qui compare la fois de la valeur et le type?
Je suis tombé sur le même problème; vérifier si une case est cochée ( dans toutes les différentes façons) retourne toujours false.
Ma solution (cours de problème) était dans le sélecteur JQuery qui a été utilisé.
uzay95 utilisé le sélecteur de classe ".", pour sélectionner les cases à cocher.
$('.cbOzelHastaAdi')**
Qui renvoie un jeu de résultats. À cet effet, de vérifier si elle est cochée n'est pas valide, car il pourrait y avoir plusieurs cases... je sais qu'il est à l'aide de la ce mot-clé dans son code, mais pour moi, cela aussi n'a pas de résoudre le problème.
Dès que vous sélectionnez la case à cocher par ID, vous pouvez évaluer son 'vérifié' attribut.
J'ai trouvé que celui-ci est probablement la meilleure façon de déterminer le statut vérifié en jQuery:
Cela vous donnera un tableau de chaque entrée a été vérifiée.
C'est surtout à partir de l'jQuery docs:
Russ Cam réponse œuvres, mais pourquoi ne pas jQueryify un peu plus?
Cela suppose que la classe cbOzelHastaAdi est maintenant attaché à la case au lieu de la durée de l'élément. Cela devrait vous permettre d'éviter le désordre ASP renommer et de permettre à de multiples tableaux similaire par page, sans la nécessité pour les multiples événement click fonctions.
=== est un type de coffre-fort comparateur de JS
Voir:
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators
C'est aussi de travail:
Il va retourner true ou false
où la case est défini comme: