Les formulaires sont essentiels pour collecter des données utilisateur. JavaScript permet de valider ces données en temps réel avant l'envoi au serveur, offrant une meilleure expérience utilisateur.
Applications concrètes : Inscription/connexion, formulaires de contact, validation d'email, vérification de mots de passe, messages d'erreur personnalisés...
Aujourd'hui : Récupérer les valeurs avec .value, valider les champs, afficher des messages d'erreur, et empêcher la soumission si le formulaire est invalide.
Utiliser .value pour lire le contenu d'un champ de formulaire.
Vérifier que les champs ne sont pas vides et respectent les formats attendus.
Afficher des messages d'erreur personnalisés pour guider l'utilisateur.
Utiliser event.preventDefault() pour bloquer la soumission si le formulaire est invalide.
Testez ces exemples dans la console interactive ci-dessus !
Objectifs de ce cours :
✅ Récupérer les valeurs des champs avec .value
✅ Valider les données côté client
✅ Afficher des messages d'erreur personnalisés
✅ Empêcher la soumission si le formulaire est invalide
✅ Créer une expérience utilisateur fluide
Points clés à retenir :
• input.value : Récupérer/modifier la valeur d'un champ
• checkbox.checked : Vérifier si une case est cochée (true/false)
• value.trim() : Supprimer les espaces avant/après
• event.preventDefault() : Bloquer la soumission du formulaire
• Toujours valider côté client ET côté serveur
• Utiliser des classes CSS (invalid/valid) pour le feedback visuel
• Collecter toutes les erreurs avant d'afficher (meilleure UX)
• Les regex sont utiles pour les validations complexes (email, téléphone...)
Exercice pratique :
1. Créez un formulaire avec nom, email, âge
2. Validez que le nom fait au moins 3 caractères
3. Validez que l'email contient @ et un point
4. Validez que l'âge est un nombre entre 18 et 120
5. Affichez des messages d'erreur personnalisés
6. Bloquez la soumission si invalide avec preventDefault
7. Bonus : Ajoutez une validation de mot de passe avec confirmation
8. Bonus 2 : Validez en temps réel avec l'événement 'input'
