Oznacz błąd w formularzu za pomocą Bootstrap

194

Zacząłem używać Bootstrap w celu uzyskania ładnego projektu strony bez uciekania się do GWT (backend jest wykonany w Javie)

Dla mojego ekranu logowania skopiowałem ten przykład . Teraz chcę zaznaczyć błąd, na przykład, że nazwa użytkownika pozostała pusta. Zastanawiałem się więc, jaka jest w tym celu procedura w ramach Bootstrap. A może istnieją przykłady pokazujące formularz z błędem.

Nie jestem pewien, czy chodzi o to, aby wyświetlać komunikat o błędzie wewnątrz elementu wejściowego kolorem czerwonym, czy pokazywać go poniżej elementu wejściowego, a może z wyskakującym okienkiem?

Luciano
źródło
1
Sprawdzanie poprawności jquery. to jest dość proste. bassistance.de/jquery-plugins/jquery-plugin-validation
Scott Simpson

Odpowiedzi:

275

(ZAKTUALIZOWANO z przykładami dla Bootstrap v4, v3 i v3)

Przykłady formularzy z klasami sprawdzania poprawności dla kilku ostatnich głównych wersji Bootstrap.

Bootstrap v4

Zobacz wersję na żywo na codepen

sprawdzanie poprawności formularza 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

Zobacz wersję na żywo na codepen

sprawdzanie poprawności formularza 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

Zobacz wersję na żywo na jsfiddle

sprawdzanie poprawności formularza bootstrap v2

.error, .success, .warningA .infozajęcia są dołączane do .control-group. Jest to standardowy znacznik i styl Bootstrap w wersji 2. Po prostu podążaj za tym i jesteś w dobrej formie. Oczywiście możesz wyjść poza własne style, aby dodać wyskakujące okienko lub „wbudowany flash”, jeśli wolisz, ale jeśli zastosujesz się do konwencji Bootstrap i zawiesisz te klasy sprawdzania poprawności .control-group, pozostanie spójna i łatwa w zarządzaniu (przynajmniej ponieważ „ Będę nadal korzystać z dokumentów i przykładów 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
źródło
130
Należy zauważyć, że z Bootstrap 3 , trzeba zmienić control-groupna form-groupdodaj form-controldo <input>elementów, help-inlinedo help-block, i warningdo has-warning.
Jim Stewart
@JimStewart dziękuję! dobrze wiedzieć. Będę aktualizować, gdy tylko będę miał okazję
jonschlinkert
11
Zostało to zmienione w Bootstrap V3,
Waqar Alamgir
8
Bootstrap 3 używa różnych klas, takich jak błąd. Pleaserefer getbootstrap.com/css
Nish
1
jak wspomniano w dokumentacji bootstrap3: Bootstrap zawiera style sprawdzania poprawności błędów, ostrzeżeń i stanów powodzenia w kontrolkach formularzy. Aby użyć, dodaj .has-warning, .has-error lub .has-success do elementu nadrzędnego. Wszelkie etykiety .control, .form-control i .help-block w tym elemencie
Nejmeddine Jammeli
147

Bootstrap V3 :

Official Doc Link 1
Official 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>
Waqar Alamgir
źródło
1
Wspaniale jest mieć odpowiedź v3, ale nie zawiera komunikatów o błędach.
Dave
Dzięki @Dave, ale twoja sugestia została odrzucona przez innych, zaktualizowałem odpowiedź.
Waqar Alamgir
Twój link demonstracyjny nie wyświetla opublikowanego kodu.
ayjay
Dzięki @ayjay za zwrócenie na to uwagi, niestety mają osobne dokumenty do dodawania bloków pomocy. Zaktualizowałem odpowiedź.
Waqar Alamgir
1
@fsasvari użyj systemu siatki w następujący sposób: <div class = "form-group has-success"> <span class = "col-sm-12"> <label class = "control-label" for = "inputSuccess1"> Wprowadź za pomocą sukces </label> </span> <span class = "col-sm-6"> <input type = "text" aria-descriptionby = "helpBlock2" id = "inputSuccess1" class = "form-control"> </ span> <span class = "col-sm-6"> <span id = "helpBlock2" class = "help-block"> Blok tekstu pomocy, który rozpada się na nowy wiersz. </span> </span> < / div>
Waqar Alamgir
16

Podczas korzystania z klasy modalnej bootstrap (v 3.3.7) można również użyć następującej klasy ... help-inline i help-block nie działały w trybie modalnym.

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

Dane wyjściowe wyglądają jak poniżej:

Przykład tekstu błędu w trybie modalnym

Sójka
źródło
4

Bootstrap V3:

Kiedy szukałem funkcji laravel, poznałem tę niesamowitą walidację formularza. Później poprawiłem funkcje ikon glifów. Teraz wygląda świetnie.

<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>

Tak to wygląda: wprowadź opis zdjęcia tutaj

Kiedy go ukończyłem, pomyślałem, że powinienem go również zaimplementować w Codeigniter. Oto sprawdzanie poprawności Codeigniter-3 za pomocą Bootstrap:

Kontroler

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.
}
}

Widok

<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>

Wynik: wprowadź opis zdjęcia tutaj

Avnish alok
źródło
3

Ogólnie najlepiej jest pokazywać błąd w pobliżu miejsca, w którym wystąpił błąd. tzn. jeśli ktoś ma błąd przy wprowadzaniu swojego adresu e-mail, zaznacz pole wprowadzania wiadomości e-mail.

Ten artykuł zawiera kilka dobrych przykładów. http://uxdesign.smashingmagazine.com/2011/05/27/getting-started-with-defensive-web-design/

Również Twitter Bootstrap ma fajną stylizację, która pomaga w tym (przewiń w dół do sekcji Stany sprawdzania poprawności) http://twitter.github.com/bootstrap/base-css.html#forms

Podświetlanie każdego pola wprowadzania danych jest nieco bardziej skomplikowane, więc najłatwiejszym sposobem byłoby po prostu umieszczenie ostrzeżenia bootstrap u góry ze szczegółami tego, co użytkownik zrobił źle. http://twitter.github.com/bootstrap/components.html#alerts

Hajpoj
źródło
1

W przypadku Bootstrap v4 użyj:
has-dangerdla form-groupopakowania,
form-control-dangerdla wejścia wyświetla ikonę (wyświetli się ✖ na końcu wejścia),
form-control-feedbackdla opakowania wiadomości

Przykład:

<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
źródło
0

Może używać CSS do wyświetlania komunikatu o błędzie tylko w przypadku błędu.

.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
źródło