2010-11-29 7 views
0

Dies ist die Kette von Ereignissen:Odd Checkbox Verhalten mit Javascript/IE6

1) Es gibt eine sichtbare HTML-Checkbox, der Benutzer überprüft oder deaktiviert das Feld

2) Die HTML-Checkbox über Javascript versteckt durch die Anzeige auf keine Einstellung

3) der HTML-Ankreuzfeld ist über JavaScript sichtbar gemacht, indem die Anzeigeeinstellung

4) die Auswahl des Benutzers Wert des Kontrollkästchen zu blockieren, zum Beispiel auf der Standardzurückkehrt, wenn das Kontrollkästchen war zuerst mit 'checke gerendert d = checked ', und der Benutzer deaktiviert das Kontrollkästchen, es wird wieder überprüft. Wenn es nicht mit checked gerendert wurde und der Benutzer das Kästchen ankreuzt, wird es wieder deaktiviert.

Das Kontrollkästchen ist ausgeblendet, wenn der Benutzer einen anderen Teil meiner Web-App öffnet. Aber wenn sie zurückgehen, sollte sich die Checkbox nicht geändert haben ... blöder IE6 ... wie auch immer, um das zu beheben?

Ich habe sogar versucht, eine onclick-Funktion hinzufügen, die effektiv ein neues Checkbox-Objekt neu erstellt, das ungerade zerstört und es ersetzt. Dies funktioniert auch nicht. Es funktioniert auch nicht gut, da es dieses Verhalten nicht stoppt, wenn das Kontrollkästchen nicht geändert wird.

+0

Setzen Sie display: none auf dem checkbox-Element? Versuchen Sie es auf seinem Wrapper zu setzen. –

+0

Nein, nur auf den Div-Container. Ansonsten werden keine Änderungen an der Checkbox vorgenommen. – cappuccino

Antwort

1

Schreiben Sie an die innerHTML an einem beliebigen Punkt im Skript? Wenn Sie beispielsweise element.innerHTML+='x' für ein Vorgängerelement angeben, wird der gesamte Inhalt des Vorfahren zerstört und neu erstellt, wodurch nicht-HTML-serialisierbare Inhalte einschließlich des Formularfeldstatus verloren gehen.

Ansonsten, nur die Einstellung display auf der Checkbox sollte nicht beeinflusst seine checkedness (und nicht für mich in IE6). Es ist jedoch fraglich, display direkt auf block zu setzen, da dies nicht der normale Anzeigewert für ein Kontrollkästchen ist. Um zu vermeiden, was die Standard-Checkbox Anzeigewert auf verschiedenen Browsern, verwenden CSS zur Sorge:

.hidden { display: none; } 

und schalten Sie das Kontrollkästchen zwischen versteckt und gezeigten Zustände durch das Hinzufügen und das Entfernen von className= 'hidden'.

+0

Das klingt nach dem, was passiert, ich benutze FancyBox, um JavaScript-Leuchtkästen zu erstellen, und wenn es zwischen Inhaltsleuchtkästen wechselt, wenn das Problem auftritt, und FancyBox macht wahrscheinlich eine Art von innerHTML-Schrift. Gibt es eine Lösung? Abgesehen davon, dass ich innerHTML nicht verwende, da ich es für andere Funktionen als das Ausblenden von Inhalten verwenden würde, wie das Hinzufügen/Ändern von Inhalten. – cappuccino

+0

Befindet sich das Kontrollkästchen tatsächlich im Inhalt der fancybox? Ansonsten, soweit ich sehen kann, sollte es nicht das 'innerHTML' berühren. – bobince

-1

Ich bin mir nicht sicher, aber vielleicht Display none setzt das Kontrollkästchen auf IE6.

Ich habe es noch nie probiert und ich habe keinen IE6 zum testen.

+0

lol, warum dann antworten? – cappuccino