フォームのバリデーションを自前で実装せざるを得ない場合に使える Constraint Validation API のサンプルを作った。
ついでに Bootstrap 4.0の Forms Validation との連携もしてみた。
See the Pen Bootstrap 4.0 + Constraint Validation API Sample (ja) by Tenderfeel (@Tenderfeel) on CodePen.
ざっくり説明
feedbackMessageをよしなに設定するとvalidityの同じキーがtrueだった場合にエラーメッセージを出す。
var feedbackMessage = {}; feedbackMessage.name = { valueMissing: '名前を入力してください', }; feedbackMessage.email = { valueMissing: 'メールアドレスを入力してください', patternMismatch: '不正なメールアドレスです' }; feedbackMessage.message = { valueMissing: 'メッセージを入力してください', tooLong: '文字数が長すぎます' };
validityプロパティのキーは下の方に全部乗せておいた。
{ //ユーザーがUIが値に変換できない入力をした場合に true badInput: '', //要素の値が与えられたパターンにマッチしない場合に true //[pattern] patternMismatch: '', //要素の値が与えられた最大値を超える場合に true //[max] rangeOverflow: '', //要素の値が与えられた最小値を下回る場合に true //[min] rangeUnderflow: '', //要素の値が step 属性で与えられた規則に合わない場合に true //[step] stepMismatch: '', //要素の値が与えられた長さより長い場合に true //[maxlength] tooLong: '', //要素の値が与えられた長さより短い場合に true //[minlength] tooShort: '', //要素の値が正しい構文ではない場合に true //[type=url][type=email] typeMismatch: '', //要素が入力必須のフィールドであるのに値がない場合に true //[required] valueMissing : '' }
HTML要素にバリデーション関連の属性が必要。
たとえばinput要素にmaxlength属性をつけたなら対応するエラーはtooLongになる。