Bootstrap4 Formulaires
Dans ce chapitre, nous allons apprendre à créer des formulaires à l'aide de Bootstrap. Bootstrap peut créer des formulaires de différents styles avec quelques balises HTML simples et des classes étendues.
Éléments de formulaire<input>, <textarea>, et<select>éléments
Lors de l'utilisation.form-controldans le cas de la classe, la largeur est définie à 100%.
Dispositions de formulaire Bootstrap4
- Formulaire empilé (pleine largeur d'écran) : direction verticale
- Formulaire en ligne : direction horizontale
Bootstrap propose deux types de dispositions de formulaire :
Formulaire empilé
L'exemple suivant utilise deux champs de saisie, une case à cocher et un bouton d'envoi pour créer un formulaire empilé :
Exemple
<form action="">
<div class="form-group">
<label for="email">Adresse e-mail :</label>
<input type="email" class="form-control" placeholder="Saisissez l'adresse e-mail" id="email">
</div>
<div class="form-group">
<label for="pwd">Mot de passe :</label>
<input type="password" class="form-control" placeholder="Saisissez le mot de passe" id="pwd">
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox"> Se souvenir de moi
</label>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
Essayez-le vous-même »
Effet d'affichage :

Formulaire en ligne
Tous les éléments d'un formulaire en ligne sont alignés à gauche.
Remarque : lorsque la largeur de l'écran est inférieure à 576px, il est empilé verticalement ; si la largeur de l'écran est supérieure ou égale à 576px, les éléments du formulaire seront affichés sur la même ligne horizontale.
Les formulaires en ligne doivent ajouter<form>à l'élément.form-inlineclasse.
L'exemple suivant utilise deux champs de saisie, une case à cocher et un bouton de soumission pour créer un formulaire en ligne :
Exemple
<form class="form-inline">
<label for="email">Adresse e-mail :</label>
<input type="email" class="form-control" id="email">
<label for="pwd">Mot de passe :</label>
<input type="password" class="form-control" id="pwd">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox"> Se souvenir de moi
</label>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
Essayez-le vous-même »
Effet d'affichage :

La disposition des éléments dans l'exemple ci-dessus semble très compacte ; vous pouvez utiliser.mr-sm-2classe pour définir la marge droite, utiliser.mb-2classe pour définir la marge inférieure :
Exemple
<form class="form-inline" action="">
<label for="email" class="mr-sm-2">Adresse e-mail :</label>
<input type="email" class="form-control mb-2 mr-sm-2" placeholder="Saisissez l'e-mail" id="email">
<label for="pwd" class="mr-sm-2">Mot de passe :</label>
<input type="password" class="form-control mb-2 mr-sm-2" placeholder="Saisissez le mot de passe" id="pwd">
<div class="form-check mb-2 mr-sm-2">
<label class="form-check-label">
<input class="form-check-input" type="checkbox"> Se souvenir de moi
</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Envoyer</button>
</form>
Essayez-le vous-même »
Effet d'affichage :

Ligne/Grille de formulaire
Nous pouvons également utiliser la.colclasse pour contrôler la largeur et l'alignement des éléments de formulaire ; il n'est pas nécessaire d'utiliser des classes d'espacement..colLes formulaires contrôlés par la classe doivent être placés dans un.rowcontainer.
L'exemple suivant affiche deux colonnes côte à côte :
Exemple
<form>
<div class="row">
<div class="col">
<input type="text" class="form-control" id="email" placeholder="Entrez l'e-mail" name="email">
</div>
<div class="col">
<input type="password" class="form-control" placeholder="Entrez le mot de passe" name="pswd">
</div>
</div>
</form>
Essayez-le vous-même »
Effet d'affichage :

Si la grille doit utiliser un espacement plus petit, vous pouvez utiliser .form-row au lieu de .row :
Exemple
<form>
<div class="form-row">
<div class="col">
<input type="text" class="form-control" id="email" placeholder="Entrez l'e-mail" name="email">
</div>
<div class="col">
<input type="password" class="form-control" placeholder="Entrez le mot de passe" name="pswd">
</div>
</div>
</form>
Essayez-le vous-même »
Validation de formulaire
Nous pouvons utiliser différentes classes de validation pour définir la fonctionnalité de validation des formulaires.
.was-validatedou.needs-validationAjoutez-le à l'élément <form>, et les champs de saisie auront un effet de bordure verte (valide) ou rouge (invalide), servant à indiquer si le formulaire nécessite une saisie.
.valid-feedbackou.invalid-feedbackLa classe est utilisée pour indiquer aux utilisateurs quelles informations manquent, ou ce qui doit être complété avant de soumettre le formulaire.
Exemple
Utilisez la classe .was-validated pour afficher le contenu qui doit être rempli avant l'envoi du formulaire :
<form action="" class="was-validated">
<div class="form-group">
<label for="uname">Nom d'utilisateur :</label>
<input type="text" class="form-control" id="uname" placeholder="Saisissez le nom d'utilisateur" name="uname" required>
<div class="valid-feedback">Validation réussie !</div>
<div class="invalid-feedback">Veuillez saisir un nom d'utilisateur !</div>
</div>
<div class="form-group">
<label for="pwd">Mot de passe :</label>
<input type="password" class="form-control" id="pwd" placeholder="Saisissez le mot de passe" name="pswd" required>
<div class="valid-feedback">Validation réussie !</div>
<div class="invalid-feedback">Veuillez saisir un mot de passe !</div>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember" required>Accepter les conditions<div class="valid-feedback">Validation réussie !</div>
<div class="invalid-feedback">Vous devez accepter les conditions avant de soumettre.</div>
</label>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</forme>
Essayez-le vous-même »
Exemple
Utilisez .needs-validation ; cela validera le contenu manquant après l'envoi du formulaire. Vous devez ajouter du code JavaScript pour que le code fonctionne correctement :
<form action="" class="needs-validation" novalidate>
<div class="form-group">
<label for="uname">Nom d'utilisateur :</label>
<input type="text" class="form-control" id="uname" placeholder="Entrez le nom d'utilisateur" name="uname" required>
<div class="valid-feedback">Validation réussie !</div>
<div class="invalid-feedback">Veuillez saisir un nom d'utilisateur !</div>
</div>
<div class="form-group">
<label for="pwd">Mot de passe :</label>
<input type="password" class="form-control" id="pwd" placeholder="Saisissez le mot de passe" name="pswd" required>
<div class="valid-feedback">Validation réussie !</div>
<div class="invalid-feedback">Veuillez saisir un mot de passe !</div>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember" required>Accepter les conditions<div class="valid-feedback">Validation réussie !</div>
<div class="invalid-feedback">Vous devez accepter les conditions avant de soumettre.</div>
</label>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
<script>// Empêcher l'envoi du formulaire si la validation échoue
(function() {
'use strict';
window.addEventListener('load', function() {
// Obtenir les styles de validation du formulaire
var forms = document.getElementsByClassName('needs-validation');
// Parcourir et empêcher l'envoi
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();</script>
Essayez-le vous-même » Autres extensions