Позначте помилку у формі за допомогою Bootstrap


194

Я почав використовувати Bootstrap, щоб досягти гарного дизайну сторінки, не вдаючись до GWT (бекенд зроблений у Java)

Для мого екрана входу я скопіював цей приклад . Тепер я хочу зазначити помилку, наприклад, у тому, що ім’я користувача було порожнім. Тож мені було цікаво, яка процедура для цього у програмі Bootstrap. А може, якщо є приклади, що показують форму з помилкою.

Я не впевнений, чи є ідея показати повідомлення про помилку всередині вхідного елемента червоним кольором, або відобразити його нижче вхідного елемента, а може бути і зі спливаючим вікном?


1
Оформити замовлення jquery перевірити. це досить просто. bassistance.de/jquery-plugins/jquery-plugin-validation
Скотт Сімпсон

Відповіді:


275

(ОНОВЛЕНО з прикладами для Bootstrap v4, v3 та v3)

Приклади форм з класами перевірки для останніх кількох основних версій Bootstrap.

Bootstrap v4

Дивіться живу версію на codepen

перевірка форми bootstrap v4

<div class="container">
  <form>
    <div class="form-group row">
      <label for="inputEmail" class="col-sm-2 col-form-label text-success">Email</label>
      <div class="col-sm-7">
        <input type="email" class="form-control is-valid" id="inputEmail" placeholder="Email">
      </div>
    </div>

    <div class="form-group row">
      <label for="inputPassword" class="col-sm-2 col-form-label text-danger">Password</label>
      <div class="col-sm-7">
        <input type="password" class="form-control is-invalid" id="inputPassword" placeholder="Password">
      </div>
      <div class="col-sm-3">
        <small id="passwordHelp" class="text-danger">
          Must be 8-20 characters long.
        </small>      
      </div>
    </div>
  </form>
</div>

Bootstrap v3

Дивіться живу версію на codepen

перевірка форми bootstrap v3

<form role="form">
  <div class="form-group has-warning">
    <label class="control-label" for="inputWarning">Input with warning</label>
    <input type="text" class="form-control" id="inputWarning">
    <span class="help-block">Something may have gone wrong</span>
  </div>
  <div class="form-group has-error">
    <label class="control-label" for="inputError">Input with error</label>
    <input type="text" class="form-control" id="inputError">
    <span class="help-block">Please correct the error</span>
  </div>
  <div class="form-group has-info">
    <label class="control-label" for="inputError">Input with info</label>
    <input type="text" class="form-control" id="inputError">
    <span class="help-block">Username is taken</span>
  </div>
  <div class="form-group has-success">
    <label class="control-label" for="inputSuccess">Input with success</label>
    <input type="text" class="form-control" id="inputSuccess" />
    <span class="help-block">Woohoo!</span>
  </div>
</form>

Bootstrap v2

Дивіться пряму версію на jsfiddle

перевірка форми bootstrap v2

.error, .success, .warningІ .infoкласи додаються до .control-group. Це стандартна розмітка Bootstrap і стилізація в v2. Просто дотримуйтесь цього, і ви в хорошій формі. Звичайно, ви можете вийти за рамки власних стилів, щоб додати спливаюче вікно або "вбудований спалах", якщо вам зручніше, але якщо ви будете дотримуватися конвенції Bootstrap і повісити ці класи перевірки, .control-groupвона буде залишатися послідовною і простою в управлінні (принаймні, оскільки ви ' Продовжуватимуть переваги документів і прикладів Bootstrap)

  <form class="form-horizontal">
    <div class="control-group warning">
      <label class="control-label" for="inputWarning">Input with warning</label>
      <div class="controls">
        <input type="text" id="inputWarning">
        <span class="help-inline">Something may have gone wrong</span>
      </div>
    </div>
    <div class="control-group error">
      <label class="control-label" for="inputError">Input with error</label>
      <div class="controls">
        <input type="text" id="inputError">
        <span class="help-inline">Please correct the error</span>
      </div>
    </div>
    <div class="control-group info">
      <label class="control-label" for="inputInfo">Input with info</label>
      <div class="controls">
        <input type="text" id="inputInfo">
        <span class="help-inline">Username is taken</span>
      </div>
    </div>
    <div class="control-group success">
      <label class="control-label" for="inputSuccess">Input with success</label>
      <div class="controls">
        <input type="text" id="inputSuccess">
        <span class="help-inline">Woohoo!</span>
      </div>
    </div>
  </form>

130
Зверніть увагу , що з Bootstrap 3 , ви повинні змінити control-groupдо form-group, додати form-controlдо <input>елементам, help-inlineдо help-blockі warningдо has-warning.
Джим Стюарт

@JimStewart дякую! здорово знати. Я
оновлюсь,

11
Він був змінений у Bootstrap V3,
Waqar Alamgir

8
Bootstrap 3 використовує різні класи, такі як has-error. Будь ласка,
дев’ятого

1
як згадується в документації bootstrap3: Bootstrap включає стилі перевірки стану помилок, попереджень та успіху на елементах управління формами. Для використання додайте до батьківського елемента .has-попередження, .has-помилку чи .has-success. Будь-яка .control-мітка, .form-control та .help-блок всередині цього елемента
Неджмеддін Джаммелі

147

Bootstrap V3 :

Офіційний Doc Link 1
Офіційний Doc Link 2

<div class="form-group has-success">
  <label class="control-label" for="inputSuccess">Input with success</label>
  <input type="text" class="form-control" id="inputSuccess" />
  <span class="help-block">Woohoo!</span>
</div>
<div class="form-group has-warning">
  <label class="control-label" for="inputWarning">Input with warning</label>
  <input type="text" class="form-control" id="inputWarning">
  <span class="help-block">Something may have gone wrong</span>
</div>
<div class="form-group has-error">
  <label class="control-label" for="inputError">Input with error</label>
  <input type="text" class="form-control" id="inputError">
  <span class="help-block">Please correct the error</span>
</div>

1
Чудово мати відповідь v3, але він не включає повідомлення про помилки.
Дейв

Дякую @Dave, але Вашу пропозицію інші відхилили, я оновив відповідь.
Вакар Аламгір

У вашому демонстраційному посилання не відображається код, який ви опублікували
ayjay

Дякую @ayjay, що вказав на це, на жаль, вони мають окремі документи для додавання довідкових блоків. Оновлено відповідь.
Waqar Alamgir

1
@fsasvari використовуйте таку систему сітки: <div class = "form-group has-success"> <span class = "col-sm-12"> <label class = "control-label" for = "inputSuccess1"> Введіть успіх </label> </span> <span class = "col-sm-6"> <type type = "text" aria-описується = "helpBlock2" id = "inputSuccess1" class = "form-control"> </ span> <span class = "col-sm-6"> <span id = "helpBlock2" class = "help-block"> Блок довідкового тексту, який переходить на новий рядок. </span> </span> < / div>
Вакар Аламгір

16

Можна також використовувати наступний клас під час використання модального класу завантаження (v 3.3.7) ... help-inline та help-block не працювали в модальному режимі.

<span class="error text-danger">Some Errors related to something</span>

Результат виглядає приблизно так:

Приклад тексту помилки в модальному режимі


4

Bootstrap V3:

Як тільки я шукав функції laravel, тоді я познайомився з цією дивовижною валідацією форми. Пізніше я змінив функції значка гліфікону. Зараз це виглядає чудово.

<div class="col-md-12">
<div class="form-group has-error has-feedback">
    <input id="enter email" name="email" type="text" placeholder="Enter email" class="form-control ">
    <span class="glyphicon glyphicon-remove form-control-feedback"></span>       
    <span class="help-block"><p>The Email field is required.</p></span>                                        
</div>
</div>
<div class="clearfix"></div>

<div class="col-md-6">
<div class="form-group has-error has-feedback">
    <input id="account_holder_name" name="name" type="text" placeholder="Name" class="form-control ">
    <span class="glyphicon glyphicon-remove form-control-feedback"></span>                                            
    <span class="help-block"><p>The Name field is required.</p></span>                                        
</div>
</div>
<div class="col-md-6">
<div class="form-group has-error has-feedback">
 <input id="check_np" name="check_no" type="text" placeholder="Check no" class="form-control ">
 <span class="glyphicon glyphicon-remove form-control-feedback"></span>
<span class="help-block"><p>The Check No. field is required.</p></span>                                       
</div>
</div>

Ось як це виглядає: введіть тут опис зображення

Після того, як я завершив його, я подумав, що я повинен реалізувати його і в Codeigniter. Отже ось перевірка Codeigniter-3 з Bootstrap:

Контролер

function addData()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('email','Email','trim|required|valid_email|max_length[128]');
if($this->form_validation->run() == FALSE)
{
//validation fails. Load your view.
$this->loadViews('Load your view','pass your data to view if any');
}
else
{  
 //validation pass. Your code here.
}
}

Вид

<div class="col-md-12">
<?php 
 $email_error = (form_error('email') ? 'has-error has-feedback' : '');
 if(!empty($email_error)){
 $emailData = '<span class="help-block">'.form_error('email').'</span>';
 $emailClass = $email_error;
 $emailIcon = '<span class="glyphicon glyphicon-remove form-control-feedback"></span>';
}
else{
    $emailClass = $emailIcon = $emailData = '';
 } 
 ?>
<div class="form-group <?= $emailClass ?>">
<input id="enter email" name="email" type="text" placeholder="Enter email" class="form-control ">
<?= $emailIcon ?>
<?= $emailData ?>
</div>
</div>

Вихід: введіть тут опис зображення


3

Як правило, найкраще показувати помилку поблизу місця помилки. наприклад, якщо хтось має помилку при введенні електронної пошти, ви виділите поле введення електронної пошти.

У цій статті є кілька хороших прикладів. http://uxdesign.smashingmagazine.com/2011/05/27/getting-started-with-defenses-web-design/

Також у Twitter twitter bootstrap є приємна стилізація, яка допомагає в цьому (прокрутіть униз до розділу Про стан перевірки) http://twitter.github.com/bootstrap/base-css.html#forms

Виділення кожного поля введення є дещо складнішим, тому найпростішим способом було б просто поставити попередження про завантажувальну систему вгорі з деталями того, що користувач зробив не так. http://twitter.github.com/bootstrap/components.html#alerts


1

Для Bootstrap v4 використовуйте:
has-dangerдля form-groupобгортки,
form-control-dangerдля введення, щоб показати значок (відображатиметься ✖ в кінці введення),
form-control-feedbackдля обгортки повідомлень

Приклад:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">


<div class="form-group has-danger">
  <input type="text" class="form-control form-control-danger">
  <div class="form-control-feedback">Not valid :(</div>
</div>


0

Можна використовувати CSS для показу повідомлення про помилку лише під час помилки.

.form-group.has-error .help-block {
    display: block;
}

.form-group .help-block {
    display: none;
}


<div class="form-group has-error">
  <label class="control-label" for="inputError">Input with error</label>
  <input type="text" class="form-control" id="inputError">
  <span class="help-block">Please correct the error</span>
</div>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.