Vue.jsで作ったSPAの入力検証にVeeValidateというフレームワークを使っています。
VeeValidate (vee-validate) とは
VeeValidateは、テンプレートベースの入力検証フレームワークで、以下のような特徴があります。
JavaScript部分で次のような設定を行い、
Vue.use(VeeValidate);
HTMLテンプレート内で
<input v-validate="'required'" name="username" type="text"> <span>{{ errors.first('username') }}</span>
このようにv-validate="..."
と書いておくだけで入力値の検証が行われるので、非常に便利です。
VeeValidateで条件付き必須チェック (required) を行う方法
この例のように、フィールドusername
が常に必須の場合は'required'
を指定しますが、「ある特定の条件がそろった場合のみ必須」としたい場合はどのような指定になるでしょうか?
答えは単純で、以下のようなコードとなります。
<input v-validate="{ required: this.isRequired }" name="username" type="text"> <span>{{ errors.first('username') }}</span>
isRequired
というのはVue.jsのcomputedフィールドです。
この値がtrueの場合は必須チェックが行われ、そうでなければ任意入力ということになります。
computed: { isRequired: function() { // 特定の条件を満たす場合はtrueを返す return ...; } }
コメント