ブートストラップを使用してフォームにエラーをマーク


194

GWTに頼らずに素敵なページデザインを実現するために、Bootstrapの使用を開始しました(バックエンドはJavaで作成されています)

私のログイン画面では、このをコピーしました。ここで、たとえば、ユーザー名が空のままにされたというエラーをマークしたいと思います。だから私はこれのためのブートストラップフレームワークの手順は何だろうと思っていました。または、エラーのあるフォームを示す例がある場合は、

入力要素内のエラーメッセージを赤い色で表示するのか、入力要素の下に表示するのか、ポップアップで表示するのかはわかりません。


1
チェックアウトjquery検証。それはかなり簡単です。bassistance.de/jquery-plugins/jquery-plugin-validation
Scott Simpson

回答:


275

(Bootstrap v4、v3、v3の例で更新)

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>

ブートストラップ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>

ブートストラップv2

参照してくださいライブバージョン jsfiddle上を

ブートストラップv2フォーム検証

.error.success.warningおよび.infoクラスがに追加されます.control-group。これは、v2での標準のBootstrapマークアップとスタイルです。ただそれに従って、あなたは良い状態にあります。もちろん、必要に応じて独自のスタイルを超えてポップアップまたは「インラインフラッシュ」を追加することもできますが、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
することを注意ブートストラップ3、あなたは変更する必要control-groupにはform-group、追加form-control<input>、要素help-inlinehelp-block、およびwarninghas-warning
ジムスチュワート

@JimStewartありがとうございます!知ってよかった。機会があり次第、更新します
jonschlinkert 2013

11
Bootstrap V3で変更されました
Waqar Alamgir 2013年

8
Bootstrap 3は、has-errorなどのさまざまなクラスを使用します。Pleaserefer getbootstrap.com/css
ニッシュ

1
bootstrap3のドキュメントで述べたように、Bootstrapには、フォームコントロールのエラー、警告、成功の状態の検証スタイルが含まれています。使用するには、.has-warning、.has-error、または.has-successを親要素に追加します。その要素内の.control-label、.form-control、.help-block
Nejmeddine Jammeli

147

Bootstrap V3

公式ドキュメントリンク1
公式ドキュメントリンク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に感謝しますが、あなたの提案は他の人に拒否されました。答えを更新しました。
Waqar Alamgir 2014年

デモリンクには、投稿したコードは表示されません。
ayjay 2015

これを指摘してくれて@ayjayに感謝します。残念ながら、ヘルプブロックを追加するための個別のドキュメントがあります。回答を更新しました。
Waqar Alamgir 2015

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"> <input type = "text" aria-writtenby = "helpBlock2" id = "inputSuccess1" class = "form-control"> </ span> <span class = "col-sm-6"> <span id = "helpBlock2" class = "help-block">新しい行に分割されるヘルプテキストのブロック。</ span> </ span> < / div>
Waqar Alamgir

16

ブートストラップモーダルクラス(v 3.3.7)を使用しているときに次のクラスを使用することもできます... help-inlineおよびhelp-blockはモーダルでは機能しませんでした。

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

出力は以下のようになります。

モーダルのエラーテキストの例


4

ブートストラップ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にも実装する必要があると思いました。したがって、Bootstrapを使用したCodeigniter-3検証は次のとおりです。

コントローラ

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ブートストラップには、これに役立ついくつかの優れたスタイルがあります(検証状態セクションにスクロールダウン) http://twitter.github.com/bootstrap/base-css.html#forms

各入力ボックスを強調表示するのは少し複雑なので、簡単な方法は、ユーザーが間違ったことの詳細を示すブートストラップアラートを上部に配置することです。 http://twitter.github.com/bootstrap/components.html#alerts


1

ブートストラップ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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.