hifiveの入力値チェック(バリデーション)機能であるFormControllerはHTMLタグに設定するだけで入力値チェック機能を追加できます。必須や数値の桁数チェックなどは簡単に行えますが、ワークフローによってはより複雑なフローが求められることでしょう。
そこで今回はより複雑な入力値チェックを実現する方法について紹介します。
1. 正規表現でチェックする
正規表現を用いることでより複雑なパターンによる入力値チェックが可能になります。これはHTML側で指定できます。例えば電話番号(国内限定)の場合は次のように設定できます。
なお、正規表現でのエラーの場合、エラーメッセージに正規表現が出てしまいます。これは開発者以外には分かりづらいと思われますので、
のようにして message をカスタマイズすることをお勧めします。
2. customFuncを用いる
より複雑な処理の場合、customFuncオプションが利用できます。この場合、 FormController.addRule
メソッドを利用します。
入力値が問題なかった場合はtrue、問題がある場合はfalseを返すだけです。
非同期処理の場合
入力値を使ってサーバに問い合わせてレスポンスを受け取る場合があります。例えばユーザIDがユニークかどうかチェックする場合です。
そうした時には Promise オブジェクトを返すようにし、検証した結果が問題なければresolve、問題ある場合はrejectを返すようにします。
3. 入力値をグルーピングする
電話番号を-(ダッシュ)ごとに区切ったり、年月日を別な入力欄に分けることはよくあります。そして、それら複数の入力欄を一つに扱って入力値の検証に使うでしょう。その場合は data-h5-input-group-container
でグループ名を定義します。この時にも各入力項目に対するバリデーション条件が指定できます。
このように定義すると入力チェック時に一つのデータとして扱えるようになります。
入力値のチェックは常に求められる機能ですが、実際にどうチェックを行うかは業務フローによって異なってくることでしょう。hifiveのバリデーションライブラリは業務システムの設計に合わせて柔軟に実装できます。ぜひ導入してください。
