Пароль
Запомнить меня
Войти
В результате форма выглядит иначе (рис. 2).
Чтобы сделать форму компактнее, к элементу достаточно добавить класс form-inline . Элементы формы после этого вытянутся в одну строку (рис. 3). Также из кода следует убрать и .
В примере 3 показано создание такой формы.
Пример 3. Однострочная форма
В классах мы использовали префикс sm, чтобы на смартфонах форма выглядела традиционно (рис. 2), а на больших экранах — как горизонтальная.
Источник
Компонент «Формы» — это набор CSS-классов, которые предназначены для оформления HTML форм: form-group , form-control , input-group , input-group-prepend , input-group-text , form-row , form-inline , invalid-feedback , valid-feedback , is-invalid , is-valid .
Поместить каждую группу элементов (например, input и связанный с ним label ) в элемент div с классом form-group . Этот класс добавляет нижние отступы к группам элементов.
Добавить к каждому текстовому элементу управления формы input , select и textarea класс form-control . Данный класс добавляет к элементам формы стили визуального оформления, размеры и многое другое.
В Bootstrap три вида форм: вертикальная, горизонтальная (с использованием классов .row и .col ) и в одну строку ( .form-inline ).
class ="form-group" > for ="input-email" >Почта type ="email" class ="form-control" id ="input-email" placeholder ="Введите email" > class ="form-group" > for ="input-password" >Пароль: type ="password" class ="form-control" id ="input-password" placeholder ="Введите пароль" > class ="form-group form-check" > type ="checkbox" class ="form-check-input" id ="remember" > class ="form-check-label" for ="remember" >Запомнить меня class ="form-group" > type ="submit" class ="btn btn-primary" >Войти
class ="form-group row" > for ="input-email" class ="col-sm-2 col-form-label" >Почта class ="col-sm-10" > type ="email" class ="form-control" id ="input-email" placeholder ="Введите email" > class ="form-group row" > for ="input-password" class ="col-sm-2 col-form-label" >Пароль class ="col-sm-10" > type ="password" class ="form-control" id ="input-password" placeholder ="Введите пароль" > class ="form-group row" > class ="col-sm-2" > class ="col-sm-10" > class ="form-check" > class ="form-check-input" type ="checkbox" id ="remember" > class ="form-check-label" for ="remember" > Запомнить меня class ="form-group row" > class ="col-sm-2" > class ="col-sm-10" > type ="submit" class ="btn btn-primary" >Войти
class ="form-inline" > for ="input-email" class ="sr-only" >Почта type ="email" class ="form-control mb-2 mr-sm-2" id ="input-email" placeholder ="Введите email" > for ="input-password" class ="sr-only" >Пароль: type ="password" class ="form-control mb-2 mr-sm-2" id ="input-password" placeholder ="Введите пароль" > class ="form-check mb-2 mr-sm-2" > type ="checkbox" class ="form-check-input" id ="remember" > class ="form-check-label" for ="remember" >Запомнить меня type ="submit" class ="btn btn-primary" >Войти
Использование сетки
class ="row" > class ="col" > type ="text" class ="form-control" placeholder ="Имя" > class ="col" > type ="text" class ="form-control" placeholder ="Фамилия" > class ="col" > type ="email" class ="form-control" placeholder ="Почта" > class ="col" > type ="password" class ="form-control" placeholder ="Пароль" >
class ="form-row" > class ="col" > type ="text" class ="form-control" placeholder ="Имя" > class ="col" > type ="text" class ="form-control" placeholder ="Фамилия" > class ="col" > type ="email" class ="form-control" placeholder ="Почта" > class ="col" > type ="password" class ="form-control" placeholder ="Пароль" >
class ="form-row" > class ="form-group col-md-6" > for ="input-email" >Почта type ="email" class ="form-control" id ="input-email" placeholder ="Введите email" > class ="form-group col-md-6" > for ="input-password" >Пароль type ="password" class ="form-control" id ="input-password" placeholder ="Введите пароль" > class ="form-row" > class ="form-group col-md-3" > for ="input-zip" >Индекс type ="text" class ="form-control" id ="input-zip" placeholder ="Почтовый индекс" > class ="form-group col-md-3" > for ="input-city" >Город type ="text" class ="form-control" id ="input-city" placeholder ="Город доставки" > class ="form-group col-md-6" > for ="input-address" >Адрес type ="text" class ="form-control" id ="input-address" placeholder ="Адрес доставки" > type ="submit" class ="btn btn-primary" >Отправить
Пример вертикального выравнивания элементов формы. Ширина каждого элемента определяется содержимым:
class ="row align-items-center" > class ="col-auto" > for ="input-email" class ="sr-only" >Почта type ="email" class ="form-control mb-2" id ="input-email" placeholder ="Введите email" > class ="col-auto" > for ="input-password" class ="sr-only" >Пароль type ="password" class ="form-control mb-2" id ="input-password" placeholder ="Введите пароль" > class ="form-check mb-2" > class ="form-check-input" type ="checkbox" id ="remember" > class ="form-check-label" for ="remember" > Запомнить class ="col-auto" > type ="submit" class ="btn btn-primary mb-2" >Войти class ="col-auto" > Поля со звездочкой обязательны
Если не использовать класс align-items-center , то эта форма выглядела бы так:
class ="form-row" > class ="form-group col-md-4" > for ="input-name" class ="sr-only" >ФИО class ="input-group" > class ="input-group-prepend" > class ="input-group-text" > class ="fas fa-user" > type ="text" class ="form-control" id ="input-name" placeholder ="Фамилия, имя" > class ="form-group col-md-4" > for ="input-email" class ="sr-only" >Почта class ="input-group" > class ="input-group-prepend" > class ="input-group-text" > class ="fas fa-envelope" > type ="email" class ="form-control" id ="input-email" placeholder ="Введите email" > class ="form-group col-md-4" > for ="input-password" class ="sr-only" >Пароль class ="input-group" > class ="input-group-prepend" > class ="input-group-text" > class ="fas fa-lock" > type ="password" class ="form-control" id ="input-password" placeholder ="Введите пароль" > class ="form-group col-md-12" > for ="input-address" class ="sr-only" >Адрес class ="input-group" > class ="input-group-prepend" > class ="input-group-text" > class ="fas fa-map-marker-alt" > type ="text" class ="form-control" id ="input-address" placeholder ="Адрес доставки" > type ="submit" class ="btn btn-primary" >Отправить
class ="form-group" > for ="input-email" >Почта type ="email" class ="form-control" id ="input-email" placeholder ="Введите email" > class ="form-group" > for ="input-password" >Пароль type ="password" class ="form-control" id ="input-password" placeholder ="Введите пароль" > id ="password-help" class ="form-text text-muted" > Пароль должен быть длиной 8-20 символов, содержать буквы и цифры и не должен содержать пробелов. class ="form-group" > type ="submit" class ="btn btn-primary" >Регистрация
class ="form-inline" > for ="input-email" class ="sr-only" >Почта type ="email" class ="form-control" id ="input-email" placeholder ="Введите email" > class ="form-group mx-sm-2" > for ="input-password" class ="sr-only" >Пароль: type ="password" class ="form-control" id ="input-password" placeholder ="Введите пароль" > id ="password-help" class ="text-muted ml-sm-2" > Должен быть не менее 8 символов. type ="submit" class ="btn btn-primary" >Регистрация
Валидация на стороне сервера
Если при проверке данных формы на стороне сервера были обнаружены ошибки, нужно снова показать форму и добавить пояснения, какие поля заполнены правильно, а какие — с ошибкой:
class ="form-row" > class ="col-md-4 mb-3" > for ="input-name" >Имя type ="text" class ="form-control is-valid" id ="input-name" placeholder ="Имя" value ="Сергей" required > class ="valid-feedback" >Поле заполнено правильно. class ="col-md-4 mb-3" > for ="input-surname" >Фамилия type ="text" class ="form-control is-valid" id ="input-surname" placeholder ="Фамилия" value ="Иванов" required > class ="valid-feedback" >Поле заполнено правильно. class ="col-md-4 mb-3" > for ="input-email" >Почта type ="text" class ="form-control is-invalid" id ="input-email" placeholder ="Почта" required > class ="invalid-feedback" >Это поле обязательно. class ="form-row" > class ="col-md-3 mb-3" > for ="input-zip" >Почтовый индекс type ="text" class ="form-control is-invalid" id ="input-zip" placeholder ="Почтовый индекс" required > class ="invalid-feedback" >Это поле обязательно. class ="col-md-3 mb-3" > for ="input-city" >Город type ="text" class ="form-control is-invalid" id ="input-city" placeholder ="Город" required > class ="invalid-feedback" >Это поле обязательно. class ="col-md-6 mb-3" > for ="input-address" >Адрес type ="text" class ="form-control is-invalid" id ="input-address" placeholder ="Адрес" required > class ="invalid-feedback" >Это поле обязательно. class ="btn btn-primary" type ="submit" >Отправить
Валидация на стороне клиента
Благодаря HTML5, можно выполнить все стандартные задачи проверки входных данных на стороне клиента без JavaScript. Для этого достаточно определить тип input поля ( text , email , url и т.п.) и добавить атрибуты required , которые отвечают за обязательность заполнения.
Чтобы отменить проверку формы браузером, достаточно добавить атрибут novalidate для элемента form . В этом случае проверка данных формы будет уже заботой разработчика.
class ="needs-validation" novalidate > class ="form-row" > class ="col-md-4 mb-3" > for ="input-name" >Имя type ="text" class ="form-control" id ="input-name" placeholder ="Имя" value ="Сергей" required > class ="valid-feedback" >Поле заполнено правильно. class ="col-md-4 mb-3" > for ="input-surname" >Фамилия type ="text" class ="form-control" id ="input-surname" placeholder ="Фамилия" value ="Иванов" required > class ="valid-feedback" >Поле заполнено правильно. class ="col-md-4 mb-3" > for ="input-email" >Почта type ="text" class ="form-control" id ="input-email" placeholder ="Почта" required > class ="invalid-feedback" >Это поле обязательно. class ="form-row" > class ="col-md-3 mb-3" > for ="input-zip" >Почтовый индекс type ="text" class ="form-control" id ="input-zip" placeholder ="Почтовый индекс" required > class ="invalid-feedback" >Это поле обязательно. class ="col-md-3 mb-3" > for ="input-city" >Город type ="text" class ="form-control" id ="input-city" placeholder ="Город" required > class ="invalid-feedback" >Это поле обязательно. class ="col-md-6 mb-3" > for ="input-address" >Адрес type ="text" class ="form-control" id ="input-address" placeholder ="Адрес" required > class ="invalid-feedback" >Это поле обязательно. class ="btn btn-primary" type ="submit" >Отправить
( 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 ) ; > ) ( ) ;
Источник