Nozioni di base sulla Constraint Validation API
Leggere lo stato di validità e i messaggi personalizzati con la Constraint Validation API
Nozioni di base sulla Constraint Validation API è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 3 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.
Che cos'è la Constraint Validation API?
La Constraint Validation API è un'interfaccia JavaScript per leggere e impostare lo stato di validazione dei form:
- Verificare se un campo è valido
- Leggere quale specifico vincolo non è stato rispettato
- Impostare messaggi di errore personalizzati
- Attivare programmaticamente l'interfaccia di validazione del browser
Proprietà validity
Ogni controllo di un form dispone di un oggetto validity con specifici flag booleani:
const input = document.getElementById('email');
const v = input.validity;
console.log(v.valid); // true if all constraints pass
console.log(v.valueMissing); // true if required but empty
console.log(v.typeMismatch); // true if type doesn't match (e.g. bad email)
console.log(v.patternMismatch); // true if pattern fails
console.log(v.tooShort); // true if shorter than minlength
console.log(v.tooLong); // true if longer than maxlength
console.log(v.rangeUnderflow); // true if less than min
console.log(v.rangeOverflow); // true if more than maxMetodo checkValidity
checkValidity() restituisce true/false e attiva l'evento invalid:
const form = document.getElementById('my-form');
// Check entire form:
if (!form.checkValidity()) {
console.log('Form has errors');
}
// Check individual field:
const email = document.getElementById('email');
if (!email.checkValidity()) {
console.log('Email is invalid');
}
// The 'invalid' event fires on invalid fieldsMetodo reportValidity
reportValidity() mostra l'interfaccia nativa di validazione del browser:
const input = document.getElementById('username');
// Shows native browser error tooltip if invalid:
const valid = input.reportValidity();
console.log(valid); // true or false
// On a form: validates all fields and shows first error:
document.getElementById('form').reportValidity();Proprietà validationMessage
validationMessage restituisce la stringa del messaggio di errore del browser:
const email = document.querySelector('input[type=email]');
email.value = 'not-an-email';
console.log(email.validationMessage);
// e.g. "Please include an '@' in the email address..."
console.log(email.validity.typeMismatch); // truesetCustomValidity
setCustomValidity(message) imposta un errore di validazione personalizzato:
const username = document.getElementById('username');
// Check availability on blur:
username.addEventListener('blur', async () => {
const res = await fetch(`/check-username?name=${username.value}`);
const { taken } = await res.json();
if (taken) {
username.setCustomValidity('This username is already taken.');
} else {
username.setCustomValidity(''); // empty string = clear the error
}
});Cancellare la validità personalizzata
È necessario cancellare la validità personalizzata quando l'utente risolve il problema:
const input = document.getElementById('username');
input.addEventListener('input', () => {
// Clear custom error when user starts typing again:
input.setCustomValidity('');
});
input.addEventListener('blur', async () => {
// Re-validate on blur:
const taken = await checkUsername(input.value);
input.setCustomValidity(taken ? 'Username taken' : '');
});Evento invalid
L'evento invalid viene attivato sui controlli del form che non superano la validazione:
document.querySelectorAll('input').forEach(input => {
input.addEventListener('invalid', (e) => {
e.preventDefault(); // prevent default browser tooltip
// Show your custom error UI instead:
showError(input, input.validationMessage);
});
});Proprietà will-validate
willValidate è true se l'elemento partecipa alla validazione dei vincoli:
document.querySelectorAll(':input').forEach(el => {
if (el.willValidate) {
console.log(el.name, 'will be validated');
}
});
// Disabled, hidden, or output elements return willValidate = falseUsare Validity nella validazione personalizzata
Un esempio completo di validazione personalizzata:
<form id="signup" novalidate>
<input type="email" id="email" name="email" required>
<span id="email-err" role="alert"></span>
<button type="submit">Sign Up</button>
</form>
<script>
const form = document.getElementById('signup');
const email = document.getElementById('email');
const err = document.getElementById('email-err');
form.addEventListener('submit', (e) => {
e.preventDefault();
err.textContent = '';
if (email.validity.valueMissing) {
err.textContent = 'Email is required.';
email.focus();
return;
}
if (email.validity.typeMismatch) {
err.textContent = 'Enter a valid email address.';
email.focus();
return;
}
// Submit...
});
</script>Riepilogo dei flag di ValidityState
Tutti i flag di ValidityState:
valueMissing— obbligatorio ma vuototypeMismatch— formato del tipo erratopatternMismatch— il pattern regex non corrispondetooShort/tooLong— minlength/maxlengthrangeUnderflow/rangeOverflow— min/maxstepMismatch— valore non valido per lo stepcustomError— è stato impostato un messaggio con setCustomValiditybadInput— il browser non riesce a interpretare il valore
Verifica rapida
Come si visualizza programmaticamente il popup nativo del browser con l'errore di validazione?
Riepilogo: Constraint Validation API
Concetti essenziali della Constraint Validation API:
input.validity— oggetto ValidityState con flag specificicheckValidity()— restituisce true/false e attiva l'evento invalidreportValidity()— verifica e mostra l'interfaccia nativa degli errorivalidationMessage— la stringa di errore del browsersetCustomValidity(msg)— imposta un errore personalizzato; usa una stringa vuota per cancellarlo
Impara HTML con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 40
- Lezioni
- 159
Domande Frequenti
La lezione «Nozioni di base sulla Constraint Validation API» è gratuita?
Sì — il testo completo di «Nozioni di base sulla 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 «Nozioni di base sulla Constraint Validation API»?
Leggere lo stato di validità e i messaggi personalizzati con la Constraint Validation API 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 3 di 4.
Quanto tempo richiede la lezione «Nozioni di base sulla 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
- required pattern min max e maxlength
- L’attributo novalidate
- Nozioni di base sulla Constraint Validation API
- Convalida HTML5 e JavaScript a confronto