2017-05-13 3 views
3

Gibt es eine Möglichkeit, CSS-Klassen basierend auf der Eigenschaft des HTML-Elements (nicht basierend auf dem Attribut des Elements) anzuwenden, ohne JavaScript zu verwenden?Validierungen von Formulareingaben mit reinem CSS

Betrachten wir zum Beispiel unterhalb Eingabeelement:

<input type="text" id="txtName" class="form-field__input" name="txtName" value=""> 

Wenn der Benutzer interagiert mit obige Element und tritt in einen Text, dessen Eigenschaft „Wert“ aktualisiert wird; Das Attribut "Wert" bleibt jedoch leer. Können wir auf die Eigenschaft des Elements innerhalb von CSS zugreifen? Ich weiß, dass es möglich ist, das Attribut "Wert" mithilfe von JavaScript zu aktualisieren, und dann mithilfe von Attributselektoren die Stile zu aktualisieren. Aber gibt es eine Möglichkeit, dies nur mit CSS-Selektoren zu erreichen?

Um zu klären, ich bin nicht besorgt darüber, ob die Eingabe gültig ist oder nicht, ich möchte nur die Verfügbarkeit von Inhalten überprüfen, und wenn der Inhalt vorhanden ist, sollte "any-css-rule-1" angewendet werden, andernfalls "any-css-Regel-2".

+1

Was Sie versuchen, auf Benutzereingaben entsprechen? Welche "css" -Regeln sollten zu welchen Bedingungen angewendet werden? – guest271314

+0

Sie erhalten viele kostenlose Validierung mit HTML5-Eingaben. Haben Sie diese ausprobiert, um zu sehen, ob sie Ihren Bedürfnissen entsprechen? – jmargolisvt

+0

Ich versuche, zwei verschiedene Klassen basierend auf dem Vorhandensein von Inhalt in der Eingabebox hinzuzufügen, ohne JS zu verwenden. Es scheint, dass dies nicht möglich ist. –

Antwort

0

Sie können pattern und required Attribute unter html; :valid, :invalid Pseudoklassen bei css, um bestimmte Benutzereingaben zu entsprechen.

:valid + [for="txtName"]:after { 
 
    content: "valid input"; 
 
    color: green; 
 
} 
 

 
:invalid + [for="txtName"]:after { 
 
    content: "invalid input"; 
 
    color: red; 
 
}
<!-- match exact user input "abc" --> 
 
<input type="text" 
 
     id="txtName" 
 
     class="form-field__input" 
 
     name="txtName" 
 
     value="" 
 
     pattern="abc" 
 
     required /> 
 
<label for="txtName"></label>

+0

Ein Hinweis für den Benutzer auf die erwartete gültige Eingabe kann bei den Attributen 'title' und' placeholder' angegeben werden. – guest271314

Verwandte Themen