Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8732

【Bootstrap】Bootstrap4のバリデーションフォームをブラウザ機能は無効にして使いたい

$
0
0

目的

Bootstrap4Validation Formを使ってフォームを作成した時、ブラウザ機能によるバリデーションメッセージも表示され何だか見づらい・・・

is-invalidクラスをJavascript(jQuery)で動的に制御してBootstrapのバリデーションメッセージだけを表示させてスッキリさせたい。

実際に作りたい画面

下のようなinputtextareaの混ざったシンプルなフォーム。Bootstrapのバリデーションメッセージのみを表示させたい。

codepen_bootstrap_validationForm.png

実装

HTML

<!-- novalidateでブラウザのバリデーション機能を無効にする --><formaction="javascript:void(0)"novalidate="novalidate"><divclass="form-row"><divclass="col-md-4 mb-3"><labelfor="validationServer01">First name</label><inputtype="text"class="form-control"id="validationServer01"placeholder="First name"><divclass="invalid-feedback">
        Please provide a First name.
      </div></div><divclass="col-md-4 mb-3"><labelfor="validationServer02">Last name</label><inputtype="text"class="form-control"id="validationServer02"placeholder="Last name"><divclass="invalid-feedback">
        Please provide a Last name.
      </div></div><divclass="col-md-4 mb-3"><labelfor="validationServerUsername">Username</label><divclass="input-group"><divclass="input-group-prepend"><spanclass="input-group-text"id="inputGroupPrepend3">@</span></div><inputtype="text"class="form-control"id="validationServerUsername"placeholder="Username"aria-describedby="inputGroupPrepend3"><divclass="invalid-feedback">
          Please choose a username.
        </div></div></div></div><divclass="form-row"><divclass="col-md-6 mb-3"><labelfor="validationServer03">City</label><textareatype="text"class="form-control"id="validationServer03"placeholder="City"></textarea><divclass="invalid-feedback">
        Please provide a valid city.
      </div></div><divclass="col-md-3 mb-3"><labelfor="validationServer04">State</label><inputtype="text"class="form-control"id="validationServer04"placeholder="State"><divclass="invalid-feedback">
        Please provide a valid state.
      </div></div><divclass="col-md-3 mb-3"><labelfor="validationServer05">Zip</label><inputtype="text"class="form-control"id="validationServer05"placeholder="Zip"><divclass="invalid-feedback">
        Please provide a valid zip.
      </div></div></div><buttonclass="btn btn-primary"type="submit">Submit form</button></form>

JS

$('form').on('submit',(e)=>{constformContents=e.target.querySelectorAll('input.form-control, textarea.form-control')for(constindexinformContents){if(!formContents[index].value){$('#'+formContents[index].id).addClass('is-invalid')}else{$('#'+formContents[index].id).removeClass('is-invalid')}}})

ブラウザのバリデーションメッセージをカスタムする方法もあるようですが、今回はBootstrapにこだわりました。。
これでバリデーションエラーがBootstrap一律になって見やすくなった!!!:relaxed:


Viewing all articles
Browse latest Browse all 8732

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>