2016-06-27 13 views
1

Ich stoße auf ein seltsames Problem in Bezug auf Checkboxen. Aus verschiedenen Gründen muss ich Checkbox-Eingaben je nach Kontext meiner Anwendung programmatisch aktivieren oder deaktivieren.removeAttribute ('checked') funktioniert nicht

Aber aus einem unbekannten Grund kann ich das Kontrollkästchen nicht deaktivieren. Die Suche im Internet lehrt mich das „geprüft“ Attribut zu entfernen, um das Feld zu deaktivieren, als „geprüft“ ist ein binäres Attribut: Check/Uncheck checkbox with javascript? und Remove attribute "checked" of checkbox

Keines dieser Themen (und viele andere, dass wir lesen) sind in meinem Fall nützlich: ich mag jQuery nicht verwenden, so der logische Weg, um das gleiche zu tun ist, removeAttribute Funktion zu nutzen, einfach so: sichtbar ausgeführt werden

document.getElementById('box').removeAttribute('checked'); 

Es scheint aber keine Wirkung .

Mein Code ist ein bisschen zu komplex und großen es hier zu posten, also machte ich eine relevantere jsFiddle Sie das Problem zeigen: https://jsfiddle.net/54fd795w/

Mit den Tasten, was auch immer der Zustand der Box ist, Sie kann sehen, dass die Schaltfläche zum Überprüfen der Box funktioniert, während die Schaltfläche zum Deaktivieren nicht ist.

Irgendwelche Ideen, damit es funktioniert oder einen Workaround findet? Danke.

+8

direkt ändern Sie die Eigenschaft, 'document.getElementById ('box'). Checked = false;' – gurvinder372

+1

Hier: https://jsfiddle.net/54fd795w/1/ –

+0

sicher davon? Ich dachte, es wäre das, was "binäres Attribut" genannt wird, was bedeutet, dass der Wert keine Rolle spielt, also "wahr", wahr, "falsch", "nein", "Ente", alle diese Werte bedeuten "wahr"? – Cheitan

Antwort

3

Das checked Attribut beschreibt den Standard Zustand des Feldes. Das Entfernen hat keine Auswirkungen, wenn mit dem Feld interagiert wurde (oder wenn seine überprüfte Eigenschaft bereits geändert wurde).

Setzen Sie die geprüfte Eigenschaft stattdessen. Es repräsentiert den aktuellen Zustand.

document.getElementById('box').checked = false; 

Beachten Sie, dass in Ihrem Dritten Beispiel gehostet, im "klicken um mich zu überprüfen" Code:

document.getElementById('box').checked = "checked"; 

... Sie ändern die Eigenschaft und die Zeichenfolge "checked" ist sein konvertiert in den booleschen true. Die checked Eigenschaft akzeptiert nur einen booleschen Wert. Das überschreibt den Standard-Status (deaktiviert, da es kein überprüftes Attribut gibt).

Sie haben nicht einmal ein geprüftes Attribut zu entfernen.

+0

danke für diese Erklärung! – Cheitan

Verwandte Themen