jQuery Uniforme Case à cocher n'est pas (de l'onu)vérifier
Je suis en utilisant jQuery Uniforme de style entrées/sélectionne l'etcs. Cependant, la case a cessé de fonctionner. Je suis appending
les données envoyées à partir d'un appel ajax. Une fois que c'est chargé, j'utilise $.uniform.update("input:checkbox")
mettre à jour le nouveau html. Lors de la tentative de (dé)vérifiez l'entrée, il ne fonctionne qu'une fois. Si je veux (onu)vérifier de nouveau, elle ne change pas du tout.
J'ai tenté de changer le Uniforme Javascript de sorte que toutes les actions (c'est à dire. click
, focus
, blur
etc) sont sous la .live
fonction. (ie. .live("click",
). Cela s'arrête juste quelque chose de travail.
Mise à jour:
J'ai lu l'Uniforme JS entièrement, et a découvert un problème:
if(!$(elem).attr("checked")){
//box was just unchecked, uncheck span
spanTag.removeClass(options.checkedClass);
}else{
//box was just checked, check span.
spanTag.addClass(options.checkedClass);
}
La .attr("checked")
syntaxe échoue. Il renverra toujours false. Pourquoi? Je ne sais pas. Ainsi que cela, il n'a pas de mise à jour de l'original input
de supprimer la checked
attribut ou le checked
attribut.
J'ai couru à travers le site officiel et a trouvé qu'il n'a pas de mise à jour de la case de saisie. Il n'est donc pas juste moi xP
J'ai Googlé un peu et trouvé plusieurs méthodes pour vérifier si une case est cochée cependant les méthodes suivantes échouent:
if ($(elem).attr("checked")) //The original.
if ($(elem).attr("checked") == true)
if ($(elem).is(":checked"))
if ($(elem).checked)
//and:
var check = $(elem).match(/checked=/);
if (check == null)
Mots de conseils sont très appréciés~ :3
Vous devez vous connecter pour publier un commentaire.
SOLUTION SIMPLE
C'est parce que
UniformJs
exige que vous mettez à jour votre modification sur les éléments uniformes, si vous avez besoin de changer les valeurs dans le formulaire dynamiquement:Modifier
Si vous souhaitez mettre à jour les
#checkbox
seulement:Viens de le faire:
Je sais que cela peut-être un peu tard, mais j'espère que ça aidera quelqu'un. J'ai dû ajouter quelques lignes dans le code uniforme de sorte qu'il serait à la recherche de pré coché des cases à cocher. Ce code commence à la ligne 262 pour moi. Je suis en utilisant des Uniformes de la version 1.7.5. Les lignes entre les " ajouté par Jean-notes sont ce que j'ai ajouté.
if(!$(elem).attr("checked")){
vérifie uniquement si la case a été cochée lorsque la page a été chargée. Ceci est différent du comportement que les précédentes versions de jQuery. Utilisationprop
au lieu deattr
pour déterminer le courant statut "vérifié".jQuery 1.6.4 a changé le sens de la
attr()
fonction, qui est utilisé par jquery.uniform.js.attr()
maintenant retourne à l'état que l'attribut A dans quand la page est chargée - pas ce que l'état de l'attribut est MAINTENANT. Il y a une fonction de remplacement appeléprop()
, qui fait le travail queattr()
l'habitude de faire.Pour corriger le plugin, remplacer chaque occurrence de
attr("checked")
avecprop("checked")
. Aussi, le changementattr("disabled")
àprop("disabled")
.Qui devrait résoudre votre projet. Il a travaillé pour moi 😉
Voir aussi: https://github.com/pixelmatrix/uniform/pull/167, qui tente de répondre à la question avec une meilleure compatibilité descendante.
Sa fait un moment mais j'ai eu le même problème mais je l'ai résolu par une solution simple.
Uniforme est l'ajout d'un
span
sur la case à cocher et lui donne la classechecked
si elle est cochée ou pas, mais au chargement de la page seulement. Si vous cochez ou décochez la case lorsque la page est déjà chargé, il va décocher (ou vérifier), mais depuis laspan
est sur elle, vous verrez qu'il n'est pas mis à jour, vous devez le faire manuellement.ou
Peut-être pas la solution la plus propre, mais qui fonctionne bien sur tous les navigateurs.
Je crois que la dernière version de Jquery utilise une autre méthode pour évaluer un :valeur cochée. À l'aide d'un peu plus ancienne version (bien que pas idéal) a résolu ce problème pour moi. C'était il y a longtemps, cependant, et PixelMatrix encore ne semblent pas avoir mis à jour l'Uniforme.
Ne pourriez-vous pas utiliser quelque chose comme
pour faire de la case cochée, et
pour la décocher?
Vous n'avez pas besoin de changer
.attr()
à.prop()
: