Question

Donc, j'ai une case à cocher

<asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>' 
     Checked="false"
     OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true" 
     EnableViewState="false"></asp:CheckBox>

celui ci-dessus. À présent, la case à cocher se trouve dans un gridview et dans la liaison de données - pour toutes les lignes du gridview, la case à cocher est définie sur false. Le problème est que la première case à cocher est toujours vérifiée.

Sous IE, le problème n’existe pas. Même chose pour Chrome. Je suis à court d'options. Aussi, si j'utilise

$("checkboxName").attr("checked"); // verified on jquery ready function.

En FF c'est vrai; IE faux; Chrome false.

Des conseils?

MODIFIER

Maintenant, préparez-vous à cela: dans le code HTML généré, il n’existe AUCUN attribut vérifié. Le diff entre FF et IE est exactement identique .

Une autre chose - la grille qui contient les cases à cocher a un panneau ajax dessus et quand je page la grille, essayez d'aller à la page 2 - le vérifiéChangé dans codebehind est déclenché.

Était-ce utile?

La solution

Dans certains codages php que j’ai récemment utilisés, j’ai remarqué que FF3 se souvenait de ce que j’avais vérifié, même après un rafraîchissement de la page F5. En regardant la source a montré le code HTML correct que je voulais générer. Pour contourner ce problème, il fallait accéder à la barre d'adresses et forcer à nouveau la demande de la page.

Pourquoi ce travail a été nécessaire, je ne suis pas sûr, mais du point de vue de l'utilisabilité normale, je l'ai apprécié, mais pas pendant le développement.

Autres conseils

Firefox mémorise l’état des champs de formulaire par défaut. Ctrl + F5 forcera Firefox à vider ce cache.

Vous pouvez le désactiver pour des éléments de formulaire et d'entrée individuels:

<form autocomplete="off"> 

<input ... autocomplete="off" /> 

Vous devez omettre la case "cochée". attribuez entièrement si vous ne voulez pas que la case à cocher soit cochée, car la vérification est déclenchée par la présence d'un attribut vérifié et non par sa valeur:

  

Les cases à cocher (et les boutons radio) sont des boutons d'activation / désactivation que l'utilisateur peut activer ou désactiver. Un commutateur est " activé " lorsque l'attribut vérifié de l'élément de contrôle est défini .

http://www.w3.org/TR/html401/ interact / forms.html # case à cocher

Pour moi, le balisage suivant génère une case à cocher qui est cochée dans IE, Firefox et Opera, comme on pouvait s'y attendre en fonction de la spécification:

<input type="checkbox" checked="false">

cela met en lumière une bizarrerie intéressante avec les cases à cocher. voici quelques html très simple je suis venu avec vraiment résumer correctement:

<html>
<body>

<input type="checkbox" checked="false" id="cb" />

<script language="javascript">
if (cb.checked == true)
  document.write('this is retarded');
</script>

</body>
</html>

Avez-vous essayé de comparer le code HTML généré par FF et IE? (avec "Voir la source HTML")

Juste pour localiser le problème un peu plus précisément. Ce n’est qu’une petite chance, mais si le code HTML est différent pour les deux navigateurs, vous avez un problème avec la façon dont ASP crée le code HTML.

Si les deux sont identiques et que votre réclamation est entièrement HTML, vous avez trouvé un bogue dans FF,

Cela se produit également lors de la sélection de zones dans FireFox 3, ce qui peut poser un problème majeur si vous utilisez cette zone pour exécuter AJAX / mettre à jour la page.

Si l'utilisateur rafraîchit la page ou fait quelque chose de bizarre avec le bouton précédent, il peut se retrouver avec la zone de sélection toujours sélectionnée, mais doit en fait désélectionner et re-sélectionner pour pouvoir réexécuter AJAX.

Dans ce cas, j'ai constaté que l'utilisation de l'événement body onunload pour effacer les cases à cocher / désélectionnées "résolu". le "problème".

$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top