Gibt es eine Möglichkeit zu erkennen, ob eine Eingabe Text über CSS enthält oder nicht? Ich habe versucht, die :empty
Pseudoklasse zu verwenden, und ich habe versucht [value=""]
, beide zu verwenden. Ich kann keine einzige Lösung dafür finden.
Ich stelle mir vor, dass dies möglich sein muss, wenn man bedenkt, dass wir Pseudoklassen für :checked
und haben :indeterminate
, die beide ähnlich sind.
Bitte beachten Sie: Ich mache dies für einen "stilvollen" Stil , der kein JavaScript verwenden kann.
Beachten Sie auch, dass Stylish clientseitig auf Seiten verwendet wird, die der Benutzer nicht kontrolliert.
Antworten:
Stylish kann dies nicht, da CSS dies nicht kann. CSS hat keine (Pseudo-) Selektoren für
<input>
Werte. Sehen:Der
:empty
Selektor bezieht sich nur auf untergeordnete Knoten, nicht auf Eingabewerte.[value=""]
funktioniert ; aber nur für den Ausgangszustand . Dies liegt daran, dass dasvalue
Attribut eines Knotens (das CSS sieht) nicht mit dervalue
Eigenschaft des Knotens übereinstimmt (vom Benutzer oder DOM-Javascript geändert und als Formulardaten übermittelt).Sofern Sie sich nicht nur um den Anfangszustand kümmern, müssen Sie ein Benutzer- oder Greasemonkey-Skript verwenden. Zum Glück ist das nicht schwer. Das folgende Skript funktioniert in Chrome oder Firefox mit installiertem Greasemonkey oder Scriptish oder in jedem Browser, der Benutzerskripte unterstützt (dh die meisten Browser außer IE).
Eine Demo der Grenzen von CSS und der Javascript-Lösung finden Sie auf dieser jsBin-Seite .
quelle
:valid
erfordert Option , um die Seite Umschreiben - das ist etwas, das OP mit stilvollem nicht tun können , und dass keiner der anderen Antworten zeigt überhaupt in einem Browser - Kontext. Der Benutzer hat keine Kontrolle über die Seite, die er besucht.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 keinvalue
Attribut hat (oder hatvalue=""
), ist der Wert des Steuerelements anfangs leer und wird nicht leer, wenn ein Zeichen (sogar ein Leerzeichen) eingegeben wird.Beispiel:
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. Alleinput
Elemente sind in diesem Sinne unvermeidlich leer. Der Selektor[value=""]
testet, ob das Element dasvalue
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.quelle
required
Attribut kann das Senden von Formularen verhindern.novalidate
Attribut für<form>
Element hinzugefügt , damit Sie sich keine Sorgen über die rote Anzeige machen müssen, wenn das Feld nach einmaligem<form ... novalidate> <input ... required /> </form>
Sie können die
:placeholder-shown
Pseudoklasse verwenden. Technisch ist ein Platzhalter erforderlich, Sie können jedoch stattdessen ein Leerzeichen verwenden.quelle
:placeholder-shown
sollte dies die akzeptierte Antwort sein. Dierequired
Methode berücksichtigt keine Randfälle. Es ist zu beachten, dass Sie ein Leerzeichen an einen Platzhalter übergeben können und diese Methode weiterhin funktioniert. Ein großes Lob.input:not(:placeholder-shown)
wird immer übereinstimmen,<input/>
auch wenn es keinen Wert gibt.und
wird funktionieren :-)
bearbeiten: http://jsfiddle.net/XwZR2/
quelle
input[value]:not([value=""])
- ist besser. Dank an alle. codepen.io/iegik/pen/ObZpqoGrundsätzlich suchen alle:
WENIGER:
Reines CSS:
quelle
Sie können den oben beschriebenen
placeholder
Trick ohne verwendenrequired
Feld verwenden.Das Problem mit
required
ist, dass Sie, wenn Sie etwas geschrieben und dann gelöscht haben - die Eingabe ist jetzt als Teil der HTML5-Spezifikation immer rot -, dann ein CSS wie oben beschrieben benötigen, um es zu korrigieren / zu überschreiben.Sie können einfach etwas ohne tun
required
CSS
Codestift: https://codepen.io/arlevi/pen/LBgXjZ
quelle
Einfache CSS:
Dieser Code wendet das angegebene CSS beim Laden der Seite an, wenn die Eingabe gefüllt ist.
quelle
Sie können den Stil
input[type=text]
unterschiedlich gestalten, je nachdem, ob die Eingabe Text enthält oder nicht, indem Sie den Platzhalter formatieren. Dies ist derzeit kein offizieller Standard, bietet jedoch umfassende Browserunterstützung, jedoch mit unterschiedlichen Präfixen:Beispiel: http://fiddlesalad.com/scss/input-placeholder-css
quelle
Verwenden von JS und CSS: keine Pseudoklasse
quelle
Der gültige Selektor erledigt den Trick.
quelle
Sie können den Platzhalter nutzen und verwenden:
quelle
Einfacher Trick mit jQuery und CSS So:
JQuery:
CSS:
quelle
Machen Sie es im HTML-Teil wie folgt:
Für den erforderlichen Parameter muss Text im Eingabefeld vorhanden sein, damit er gültig ist.
quelle
Ja! Sie können dies mit einem einfachen Basisattribut mit Wertauswahl tun.
quelle
Dies ist mit CSS nicht möglich. Um dies zu implementieren, müssen Sie JavaScript (z
$("#input").val() == ""
. B. ) verwenden.quelle