Es ist möglich, mit den üblichen CSS-Einschränkungen und wenn der HTML-Code geändert werden kann. Wenn Sie das required
Attribut zum Element hinzufügen , stimmt das Element überein :invalid
oder :valid
hängt davon ab, ob der Wert des Steuerelements leer ist oder nicht. Wenn das Element kein value
Attribut hat (oder hat value=""
), ist der Wert des Steuerelements anfangs leer und wird nicht leer, wenn ein Zeichen (sogar ein Leerzeichen) eingegeben wird.
Beispiel:
<style>
#foo { background: yellow; }
#foo:valid { outline: solid blue 2px; }
#foo:invalid { outline: solid red 2px; }
</style>
<input id=foo required>
Die pseudoklassifizierten :valid
und:invalid
werden nur in CSS-Dokumenten auf Working Draft-Ebene definiert, aber die Unterstützung ist in Browsern ziemlich weit verbreitet, außer dass sie im IE mit IE 10 geliefert wurde.
Wenn Sie leere Werte einschließen möchten, die nur aus Leerzeichen bestehen, können Sie das Attribut hinzufügen pattern=.*\S.*
.
Es gibt (derzeit) keinen CSS-Selektor, mit dem direkt erkannt werden kann, ob ein Eingabesteuerelement einen nicht leeren Wert hat. Daher müssen wir dies indirekt tun, wie oben beschrieben.
Im Allgemeinen beziehen sich CSS-Selektoren auf Markups oder in einigen Fällen auf Elementeigenschaften, die mit Skripten (clientseitiges JavaScript) festgelegt wurden, und nicht auf Benutzeraktionen. Entspricht beispielsweise einem :empty
Element mit leerem Inhalt im Markup. Alle input
Elemente sind in diesem Sinne unvermeidlich leer. Der Selektor [value=""]
testet, ob das Element das value
Attribut im Markup hat und die leere Zeichenfolge als Wert hat. Und :checked
und :indeterminate
sind ähnliche Dinge. Sie werden von tatsächlichen Benutzereingaben nicht beeinflusst.