2010-03-26 4 views
2

Je vais avoir un problème de vérification si une case est cochée en utilisant jquery sur Internet Explorer. Ce est le code que je utilise:jquery case cochée problème IE

if ($('#chkjq_1').attr('checked') == true) 

Il fonctionne très bien sur Firefox ou Chrome, mais sur Internet Explorer 7, la condition est toujours fausse, car le navigateur définit la propriété de cette façon:

<input id="chkjq_1" type="checkbox" CHECKED/> IE7 

Et le droit chemin est le suivant: (Firefox, Chrome):

<input id="chkjq_1" type="checkbox" checked="checked"/> FF, Chrome, etc 

Que dois-je faire pour éviter ce problème sur Internet Explorer 7; Existe-t-il un moyen générique pour résoudre ce problème?

Merci d'avance.

+0

quelle version de jQuery utilisez-vous? – Samuel

+1

Voir http://stackoverflow.com/questions/901712/check-checkbox-checked-property-using-jquery – Mayo

+0

Quel est responsable de la production de vos balises d'entrée? Est-ce un contrôle serveur ASP.NET ou quelque chose de similaire? Il est préférable de se concentrer sur les raisons pour lesquelles le tag est mal rendu et de voir si vous pouvez y remédier. alors le jQuery devrait juste fonctionner. –

Répondre

16

Essayez ceci:

if ($('#chkjq_1').is(':checked')) 
{ 
    // more code 
} 
+0

ça marche aussi pour moi. dans le cas de mon «CHECKED» ne fonctionne pas dans IE9 et je le change en «vérifié» et fonctionne. – Forhad

2

La seule chose que je pouvais arriver à travailler de manière cohérente était de tester comme ceci:

if ($('#chkjq_1').is('[CHECKED]')) 

En utilisant tous les bouchons sur le sélecteur comme IE rend lorsque vous ouvrez Developer Outils. Fonctionne à travers les navigateurs autant que je peux dire. .is (': checked') ne correspondrait pas pour moi (en utilisant JQuery 1.7.1). Testé en utilisant IE 7 et IE 8 dans plusieurs modes. Les autres navigateurs (Firefox, Safari testé) ne semblent pas s'en soucier.

+0

Cela teste si l'attribut checked est présent. Mais dans Firefox, si je décoche une case à cocher, est ('CHECKED') est toujours vrai. – rakensi

+0

C'est parce que vous avez besoin est (': CHECKED') –

1

événement « changement » de case à cocher dans IE est déclenchée weirdly.

Ceci peut être résolu que: - 1.) lier l'événement onclick de case d'entrée à la fonction cible qui doit être tiré 2.) dans la fonction cible, vérifier l'état de la case à cocher en cochant la case « cochée » attribut via-

if ($('#chkBox').attr("checked") == "checked"){ 
     // do something ----or .attr("checked", "checked"); ---for another checkbox 
}else{ 
     // do something else ----or .removeAttr("checked"); ---for another checkbox 
}