La Constraint Validation API
Leggere gli stati di validità e verificare i vincoli con JavaScript
La Constraint Validation API è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Validazione senza JavaScript
HTML5 ha introdotto la validazione integrata dei moduli tramite attributi: required, type="email", type="number", min, max, pattern, minlength, maxlength. Il browser esegue automaticamente la validazione all'invio e mostra i messaggi di errore, senza bisogno di JavaScript.
<input type="email" name="email" required>
<input type="number" name="age" min="18" max="120" required>
<input type="text" name="phone" pattern="\d{10}" required>Selettori CSS per la validazione
:invalid corrisponde agli input che non superano la validazione; :valid corrisponde agli input che la superano. :user-invalid (moderno) corrisponde agli input solo dopo l'interazione dell'utente, evitando bordi rossi su un modulo ancora intatto. Stilizzi gli errori con queste pseudo-classi.
input:user-invalid {
border-color: red;
}
input:user-invalid + .error {
display: block;
}L'oggetto ValidityState
Ogni controllo del modulo espone una proprietà validity: un oggetto ValidityState con flag booleani: valid, valueMissing, typeMismatch, patternMismatch, rangeUnderflow, tooShort e altri. Lo esamini per decidere quale errore mostrare.
const input = form.querySelector("input[type=email]");
if (input.validity.typeMismatch) {
showError(input, "Please enter a valid email address");
}Metodo checkValidity
input.checkValidity() restituisce true se il valore soddisfa tutti i vincoli, altrimenti restituisce false. form.checkValidity() controlla l'intero modulo. È utile per i controlli programmatici prima di eseguire AJAX o di consentire all'utente di avanzare in una procedura guidata.
Metodo reportValidity
input.reportValidity() si comporta come checkValidity, ma attiva anche il tooltip integrato del browser e porta il focus sul primo campo non valido. Lo usi quando desidera ottenere gratuitamente l'interfaccia nativa; usi checkValidity quando desidera visualizzare gli errori in modo completamente personalizzato.
Personalizzare i messaggi integrati
I messaggi predefiniti del browser ("Compili questo campo") potrebbero non corrispondere al tono o alla lingua desiderati. Li sovrascriva con input.setCustomValidity("Enter a valid coupon code"). L'input diventa non valido finché non elimina il messaggio con setCustomValidity("").
novalidate disabilita l'interfaccia del browser
Aggiunga novalidate al modulo per sopprimere il comportamento di validazione predefinito del browser. È utile quando implementa una visualizzazione degli errori completamente personalizzata; il modulo viene comunque inviato, indipendentemente dal fatto che avrebbe superato la validazione, quindi lo controlli programmaticamente prima dell'invio.
Ascoltare gli eventi invalid
Ogni controllo emette un evento invalid quando la validazione non riesce. Lo ascolti per sopprimere il tooltip predefinito e visualizzare un messaggio personalizzato: input.addEventListener("invalid", (e) => { e.preventDefault(); showError(input); }).
pattern con espressioni regolari
L'attributo pattern contiene un'espressione regolare JavaScript a cui il valore deve corrispondere integralmente (non servono i caratteri di ancoraggio ^ e $: sono impliciti). Lo associ all'attributo title per descrivere agli utenti il formato previsto.
La validazione lato server è ancora necessaria
La validazione HTML è una comodità per gli utenti, ma può essere aggirata da chiunque modifichi il DOM. Esegua sempre una nuova validazione sul server. I vincoli HTML servono all'esperienza utente (feedback immediato, meno richieste), non alla sicurezza.
Combinare più vincoli
I vincoli si sommano: <input type="number" min="18" max="120" required step="1"> deve essere presente, contenere un intero e avere un valore compreso tra 18 e 120. Il browser indica quale vincolo specifico non è stato rispettato tramite i flag di ValidityState, così può mostrare il messaggio corretto.
Verifica delle conoscenze
In che modo la pseudo-classe CSS :user-invalid differisce da :invalid?
Riepilogo
Gli attributi di validazione nativi (required, type, pattern, min, max) e l'API ValidityState offrono una potente validazione lato client, senza JavaScript per impostazione predefinita. CSS :user-invalid applica gli stili agli errori dopo l'interazione. checkValidity/reportValidity eseguono controlli programmatici. setCustomValidity sovrascrive i messaggi predefiniti. Esegua sempre una nuova validazione sul server.
Domande Frequenti
La lezione «La Constraint Validation API» è gratuita?
Sì — il testo completo di «La Constraint Validation API» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «La Constraint Validation API»?
Leggere gli stati di validità e verificare i vincoli con JavaScript Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «La Constraint Validation API»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- La FormData API
- La Constraint Validation API
- reportValidity e setCustomValidity
- Eventi di reset dei moduli e gestione dello stato