Recentemente ho scoperto che la pseudo-classe :invalid
si applica agli elementi del modulo required
non appena la pagina viene caricata. Ad esempio, se si dispone di questo codice:Ritardato HTML5: pseudo-classe non valida fino al primo evento
<style>
input:invalid { background-color: pink; color: white; }
input:valid { background-color: white; color: black; }
</style>
…
<input name="foo" required />
Quindi la pagina verrà caricata con un elemento di input rosa vuoto su di esso. Avere una validazione incorporata in HTML5 è grandioso, ma non penso che la maggior parte degli utenti si aspettino che il modulo venga convalidato prima di avere la possibilità di inserire qualsiasi valore. Esiste un modo per ritardare l'applicazione della pseudo-classe fino a quando il primo evento non influisce su quell'elemento (form submit, blur, change, whatever appropriate)? È possibile farlo senza JavaScript?
"Non ideale con qualsiasi mezzo." Infatti. C'è un modo di applicare lo styling a contenuti validi, ma non necessari, dopo che l'elemento ha perso l'attenzione? Non ho elaborato un modo per farlo. –
Potrei immaginare una classe pseduo (attualmente non esistente) per forme come "inoltrate", in modo che questo agisca come un selettore genitore per qualsiasi input contenuto, come '#myform: input inviato: richiesto: invalid'. Perché anche se questo scenario attuale non è intuitivo, non è necessariamente realistico aspettarsi che il CSS sappia che un campo non è valido in circostanze specifiche (perché non dovrebbe farlo subito, per quanto ne sa?), Quindi vuoi davvero legare lo stile di input allo stato del modulo, non all'input stesso (ad es. quando il campo richiesto è vuoto E viene inviato il modulo genitore). – Anthony
Questa risposta: https: // stackoverflow.it/questions/41619497/how-to-make-pseudo-class-invalid-apply-to-an-input-after-submitting-a-form si occupa effettivamente di questo bene, penso, anche se richiede un po 'di javascript . Aggiunge solo una classe "inviata" al modulo (proprio come stavo suggerendo!) In modo che le regole di stile possano essere 'form.submitted input: required: invalid' – Anthony