È possibile, con i soliti avvertimenti CSS e se il codice HTML può essere modificato. Se aggiungi l' required
attributo all'elemento, l'elemento corrisponderà :invalid
o in :valid
base al fatto che il valore del controllo sia vuoto o meno. Se l'elemento non ha alcun value
attributo (o ha value=""
), il valore del controllo è inizialmente vuoto e diventa non vuoto quando viene inserito un carattere (anche uno spazio).
Esempio:
<style>
#foo { background: yellow; }
#foo:valid { outline: solid blue 2px; }
#foo:invalid { outline: solid red 2px; }
</style>
<input id=foo required>
Gli pseudo-classificati :valid
e :invalid
sono definiti solo nei documenti CSS a livello di Working Draft, ma il supporto è piuttosto diffuso nei browser, tranne che in IE, è arrivato con IE 10.
Se si desidera rendere "vuoti" includere valori costituiti solo da spazi, è possibile aggiungere l'attributo pattern=.*\S.*
.
Non esiste (attualmente) alcun selettore CSS per rilevare direttamente se un controllo di input ha un valore non vuoto, quindi è necessario farlo indirettamente, come descritto sopra.
In genere, i selettori CSS fanno riferimento al markup o, in alcuni casi, alle proprietà degli elementi impostate con lo scripting (JavaScript lato client), piuttosto che con le azioni dell'utente. Ad esempio, :empty
abbina l'elemento con contenuto vuoto nel markup; tutti gli input
elementi sono inevitabilmente vuoti in questo senso. Il selettore [value=""]
verifica se l'elemento ha l' value
attributo nel markup e ha la stringa vuota come valore. E :checked
e :indeterminate
sono cose simili. Non sono interessati dall'effettivo input dell'utente.