Отметить ошибку в форме с помощью Bootstrap

194

Я начал использовать Bootstrap для того, чтобы получить хороший дизайн страницы без использования GWT (бэкэнд сделан в Java)

Для моего экрана входа я скопировал этот пример . Теперь я хочу отметить ошибку, например, что имя пользователя оставлено пустым. Поэтому мне было интересно, какова процедура в рамках Bootstrap для этого. Или, может быть, если есть примеры, показывающие форму с ошибкой.

Я не уверен, что идея состоит в том, чтобы показать сообщение об ошибке внутри элемента ввода красным цветом, или показать его под элементом ввода, или, может быть, всплывающее окно?

Лучано
источник
1
Оформить заказ JQuery проверить. это довольно просто. bassistance.de/jquery-plugins/jquery-plugin-validation
Скотт Симпсон

Ответы:

275

(ОБНОВЛЕНО с примерами для Bootstrap v4, v3 и v3)

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

Bootstrap v4

Смотрите живую версию на codepen

проверка формы начальной загрузки 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

проверка формы начальной загрузки 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

проверка формы начальной загрузки 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>
jonschlinkert
источник
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. Пожалуйста, ознакомьтесь с getbootstrap.com/css
Ninthu
1
как упомянуто в документации по bootstrap3: Bootstrap включает в себя стили проверки для ошибок, предупреждений и успешных состояний элементов управления формы. Чтобы использовать, добавьте .has-warning, .has-error или .has-success к родительскому элементу. Любой .control-label, .form-control и .help-block в этом элементе
Неймеддин Джаммели
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 за указание на это, к сожалению, у них есть отдельные документы для добавления блоков помощи. Обновил ответ.
Вакар Аламгир
1
@fsasvari использует систему сетки следующим образом: <div class = "form-group has-success"> <span class = "col-sm-12"> <label class = "control-label" for = "inputSuccess1"> Ввод с success </ label> </ span> <span class = "col-sm-6"> <input type = "text" aria-описаныby = "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-defensive-web-design/

Кроме того, в Twitter bootstrap есть несколько приятных стилей, которые помогают с этим (прокрутите вниз до раздела «Состояние проверки») http://twitter.github.com/bootstrap/base-css.html#forms

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

hajpoj
источник
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>

Sojtin
источник
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>
kravits88
источник