Domanda

Quindi - ho una casella di controllo

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

quello sopra. Ora, la casella di controllo è in una visualizzazione griglia e su un database - per tutte le righe nella visualizzazione griglia la casella è impostata su false. Il problema è che la prima casella è ancora vera selezionata.

In IE il problema non esiste, lo stesso per Chrome. Sto finendo le opzioni. Anche se uso

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

In FF è vero; IE falso; Chrome falso.

Qualche consiglio?

Modifica

Ora preparati per questo: nel codice HTML generato - NON è presente alcun attributo controllato. La differenza tra FF e IE è esattamente la stessa .

Un'altra cosa: la griglia che contiene le caselle di controllo ha un pannello ajax su di essa e quando sfoglio la griglia, provo ad andare alla pagina 2 - viene attivato il segno di spunta modificato in codebehind.

È stato utile?

Soluzione

In alcuni codici php che ho fatto di recente, ho notato che FF3 stava ricordando ciò che ho controllato, anche dopo un aggiornamento della pagina F5. Guardando la fonte ho mostrato l'HTML corretto che volevo generare. Per ovviare a questo è stato andare alla barra degli indirizzi e forzare nuovamente la richiesta per la pagina.

Perché questo work around era necessario non ne sono sicuro, ma da una normale prospettiva di usabilità l'ho apprezzato, non solo durante lo sviluppo.

Altri suggerimenti

Firefox ricorda lo stato dei campi del modulo per impostazione predefinita. Ctrl + F5 forza Firefox a cancellare questa cache.

Puoi disabilitarlo per i singoli moduli ed elementi di input:

<form autocomplete="off"> 

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

Dovresti omettere il segno di spunta " attributo interamente se non si desidera che la casella di controllo sia selezionata, poiché il controllo è attivato dalla presenza di un attributo controllato , non dal suo valore:

  

Le caselle di controllo (e i pulsanti di opzione) sono interruttori on / off che possono essere attivati ??dall'utente. Un interruttore è " attivo " quando l'attributo controllato dell'elemento di controllo è impostato .

http://www.w3.org/TR/html401/ interagire / Forms.html # casella

Per me, il seguente markup produce una casella di controllo che è selezionata in IE, Firefox e Opera, come ti aspetteresti in base alle specifiche:

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

questo fa luce su una stranezza interessante con caselle di controllo. ecco alcuni HTML molto semplici che mi sono venuti in mente per riassumere davvero correttamente:

<html>
<body>

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

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

</body>
</html>

Hai provato a confrontare l'HTML genulato da FF e IE? (con " visualizza sorgente html ")

Solo per localizzare il problema un po 'più precisamente. È solo una piccola possibilità, ma se l'HTML è diverso per entrambi i browser, hai un problema sul lato server con il modo in cui ASP crea l'HTML.

Se entrambi sono uguali e in tutto il reclamo HTML hai trovato un bug in FF,

Questo accade anche per selezionare le caselle in FireFox 3, il che può essere un grosso problema se si utilizza quella casella per eseguire AJAX / aggiornare la pagina.

Se l'utente aggiorna la pagina o fa qualche stranezza con il pulsante Indietro, può finire con la casella di selezione ancora selezionata, ma in realtà deve deselezionare e ri-selezionare per rieseguire AJAX.

In questo caso ho scoperto che usando l'evento body onunload per deselezionare tutte le caselle di selezione / controllo "risolve" il "problema".

$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top