Ich habe eine verdammt gute Zeit mit diesem speziellen CSS-Selektor, der nicht funktionieren möchte, wenn ich ihn hinzufüge :not(:empty)
. Es scheint gut mit jeder Kombination der anderen Selektoren zu funktionieren:
input:not(:empty):not(:focus):invalid { border-color: #A22; box-shadow: none }
Wenn ich das :not(:empty)
Teil entferne , funktioniert es einwandfrei. Selbst wenn ich den Selektor auf input:not(:empty)
ihn ändere, werden keine Eingabefelder ausgewählt, in die Text eingegeben wurde. Ist das kaputt oder darf ich es einfach nicht :empty
in einem :not()
Selektor verwenden?
Das einzige andere, woran ich denken kann, ist, dass Browser immer noch sagen, dass das Element leer ist, weil es keine untergeordneten Elemente hat, sondern nur einen "Wert" pro Wort. Verfügt der :empty
Selektor nicht über eine separate Funktionalität für ein Eingabeelement im Vergleich zu einem regulären Element? Dies scheint jedoch nicht wahrscheinlich zu sein, da bei Verwendung :empty
eines Felds und Eingabe etwas dazu führen, dass die alternativen Effekte verschwinden (weil es nicht mehr leer ist).
Getestet in Firefox 8 und Chrome.
:empty
Wähler „Einige andere Elemente, auf der anderen Seite, sind leer (dh sie haben keine Kinder) definitionsgemäß : <input>
, <img>
, <br>
, und <hr>
, zum Beispiel.“
:not(:empty)
, funktioniert der rote Rand wie erwartet für eine Eingabe, die nicht scharfgestellt, aber ungültig ist.