Bootstrap4 Формы
В этой главе мы узнаем, как создавать формы с помощью Bootstrap. Bootstrap позволяет создавать формы разных стилей с помощью некоторых простых тегов HTML и расширенных классов.
Элементы формы<input>, <textarea>, и<select>элементы
При использовании.form-controlв случае этого класса ширина устанавливается на 100%.
Макеты форм Bootstrap4
- Вертикальная форма (на всю ширину экрана): вертикальное направление
- Встроенная форма: горизонтальное направление
Bootstrap предоставляет два типа макетов форм:
Вертикальная форма
В следующем примере используются два поля ввода, один флажок и одна кнопка отправки для создания вертикальной формы:
Пример
<form action="">
<div class="form-group">
<label for="email">Адрес электронной почты:</label>
<input type="email" class="form-control" placeholder="Введите адрес электронной почты" id="email">
</div>
<div class="form-group">
<label for="pwd">Пароль:</label>
<input type="password" class="form-control" placeholder="Введите пароль" id="pwd">
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox"> Запомнить меня
</label>
</div>
<button type="submit" class="btn btn-primary">Отправить</button>
</form>
Попробуйте сами »
Эффект отображения:

Встроенная форма
Все элементы встроенной формы выровнены по левому краю.
Примечание: когда ширина экрана меньше 576px, элементы располагаются вертикально; если ширина экрана больше или равна 576px, элементы формы будут отображаться на одной горизонтальной линии.
Для встроенных форм необходимо добавить<form>к элементу.form-inlineкласс.
В следующем примере используются два поля ввода, один флажок и одна кнопка отправки для создания встроенной формы:
Пример
<form class="form-inline">
<label for="email">Адрес электронной почты:</label>
<input type="email" class="form-control" id="email">
<label for="pwd">Пароль:</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"> Запомнить меня
</label>
</div>
<button type="submit" class="btn btn-primary">Отправить</button>
</form>
Попробуйте сами »
Эффект отображения:

Расположение элементов в приведенном выше примере выглядит очень компактно; вы можете использовать класс.mr-sm-2для установки правого отступа, использовать класс.mb-2для установки нижнего отступа:
Пример
<form class="form-inline" action="">
<label for="email" class="mr-sm-2">Адрес электронной почты:</label>
<input type="email" class="form-control mb-2 mr-sm-2" placeholder="Введите адрес электронной почты" id="email">
<label for="pwd" class="mr-sm-2">Пароль:</label>
<input type="password" class="form-control mb-2 mr-sm-2" placeholder="Введите пароль" id="pwd">
<div class="form-check mb-2 mr-sm-2">
<label class="form-check-label">
<input class="form-check-input" type="checkbox"> Запомнить меня
</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Отправить</button>
</form>
Попробуйте сами »
Эффект отображения:

Строка/сетка формы
Мы также можем использовать класс.colдля управления шириной и выравниванием элементов формы; нет необходимости использовать классы отступов..colФормы, управляемые этим классом, должны быть помещены в.rowcontainer.
Следующий пример отображает две колонки рядом:
Пример
<form>
<div class="row">
<div class="col">
<input type="text" class="form-control" id="email" placeholder="Введите email" name="email">
</div>
<div class="col">
<input type="password" class="form-control" placeholder="Введите пароль" name="pswd">
</div>
</div>
</form>
Попробуйте сами »
Эффект отображения:

Если сетке требуется использовать меньшие отступы, можно использовать .form-row вместо .row:
Пример
<form>
<div class="form-row">
<div class="col">
<input type="text" class="form-control" id="email" placeholder="Введите email" name="email">
</div>
<div class="col">
<input type="password" class="form-control" placeholder="Введите пароль" name="pswd">
</div>
</div>
</form>
Попробуйте сами »
Проверка формы
Мы можем использовать различные классы валидации, чтобы настроить функциональность валидации форм.
.was-validatedили.needs-validationДобавьте его к элементу <form>, и поля ввода получат зеленую (валидную) или красную (невалидную) рамку, используемую для указания, нужно ли заполнять форму.
.valid-feedbackили.invalid-feedbackКласс используется, чтобы сообщить пользователям, какая информация отсутствует или что нужно заполнить перед отправкой формы.
Пример
Используйте класс .was-validated, чтобы отобразить содержимое, которое нужно заполнить перед отправкой формы:
<form action="" class="was-validated">
<div class="form-group">
<label for="uname">Имя пользователя:</label>
<input type="text" class="form-control" id="uname" placeholder="Введите имя пользователя" name="uname" required>
<div class="valid-feedback">Проверка прошла успешно!</div>
<div class="invalid-feedback">Пожалуйста, введите имя пользователя!</div>
</div>
<div class="form-group">
<label for="pwd">Пароль:</label>
<input type="password" class="form-control" id="pwd" placeholder="Введите пароль" name="pswd" required>
<div class="valid-feedback">Проверка прошла успешно!</div>
<div class="invalid-feedback">Пожалуйста, введите пароль!</div>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember" required>Согласен с условиями<div class="valid-feedback">Проверка прошла успешно!</div>
<div class="invalid-feedback">Вы должны согласиться с условиями перед отправкой.</div>
</label>
</div>
<button type="submit" class="btn btn-primary">Отправить</button>
</форма>
Попробуйте сами »
Пример
Используйте .needs-validation; он проверит недостающее содержимое после отправки формы. Вам нужно добавить немного кода JavaScript, чтобы код работал правильно:
<form action="" class="needs-validation" novalidate>
<div class="form-group">
<label for="uname">Имя пользователя:</label>
<input type="text" class="form-control" id="uname" placeholder="Введите имя пользователя" name="uname" required>
<div class="valid-feedback">Проверка прошла успешно!</div>
<div class="invalid-feedback">Пожалуйста, введите имя пользователя!</div>
</div>
<div class="form-group">
<label for="pwd">Пароль:</label>
<input type="password" class="form-control" id="pwd" placeholder="Введите пароль" name="pswd" required>
<div class="valid-feedback">Проверка прошла успешно!</div>
<div class="invalid-feedback">Пожалуйста, введите пароль!</div>
</div>
<div class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember" required>Согласен с условиями<div class="valid-feedback">Проверка прошла успешно!</div>
<div class="invalid-feedback">Вы должны согласиться с условиями перед отправкой.</div>
</label>
</div>
<button type="submit" class="btn btn-primary">Отправить</button>
</form>
<script>// Предотвратить отправку формы, если проверка не пройдена
(function() {
'use strict';
window.addEventListener('load', function() {
// Получить стили проверки формы
var forms = document.getElementsByClassName('needs-validation');
// Пройти в цикле и предотвратить отправку
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>
Попробуйте сами » Другие расширения