Umgang mit Browserdifferenzen mit unbestimmter Checkbox
Grundierung: Ein HTML-Kontrollkästchen kann als gesetzt werdenindeterminate
, was anzeigt, dass es weder aktiviert noch deaktiviert ist. Selbst in diesem unbestimmten Zustand gibt es immer noch einen zugrunde liegenden Booleschen Wertchecked
Zustand.
Wenn ein unbestimmtes Kontrollkästchen angeklickt wird, verliert es seinindeterminate
Zustand. Je nach Browser (Firefox) kann es zusätzlich das umschaltenchecked
Eigentum.
Diese Geige veranschaulicht die Situation. Wenn Sie in Firefox auf eines der Kontrollkästchen klicken, wird der ursprüngliche Basiswert umgeschaltetchecked
Zustand. Im IE wird diechecked
Eigenschaft wird für den ersten Klick allein gelassen.
Ich möchte, dass sich alle Browser gleich verhalten, auch wenn dies zusätzliches Javascript bedeutet. Leider ist dieindeterminate
Eigenschaft ist auf false gesetztVor dasonclick
Handler (oderonchange
und jquerychange
) aufgerufen wird, daher kann ich nicht erkennen, ob es für einen Klick auf eine aufgerufen wirdindeterminate
Kontrollkästchen oder nicht.
Dasmouseup
undkeyup
(für Leertaste umschalten) Ereignisse zeigen den Stand der Dingeindeterminate
Staat, aber ich möchte lieber nicht so spezifisch sein: es scheint zerbrechlich.
Ich könnte eine separate Eigenschaft auf der Checkbox pflegen (data-indeterminate
oder ähnliches), aber ich wollte wissen, ob es eine einfache Lösung gibt, die mir fehlt, und / oder ob andere Leute ähnliche Probleme haben.