前提・実現したいこと
Vue.jsでフォーム画面を作成しており、VeeValidateでバリデーションをかけております。
フォームが複数あり、いずれか1つのフォームにエラーがある場合に完了ボタンをdisableにしたいです。
発生している問題・エラーメッセージ
通常、ValidationObserverタグ内でv-slot="{invalid}"として、同フォーム内の送信ボタンタグに:disable="invalid"とすることで実現できますが、私が作成しているコンポーネント 設計上、完了ボタンが親コンポーネントに置かれており、他の方法で実現する必要があります。
試したこと
以下の方法で試しましたが、いずれも期待する動作を実現できませんでした。
①{invalid}を表示するinputタグを用意し、その中に@changeでtrueとfalseが切り替わる度にmethodを走らせる
②同様にinputタグを用意し、v-modelでdata()内の変数と同期させ、watchで監視する
inputもしくはHTMLの変化を検知できれば実現できると思うのですが、方法が見つからず。。。
何かヒント等ございましたら、ご教示頂けますと幸いです。
該当のソースコード
上記の①のパターンのソースコードです(一部抜粋しております)
FormComponent.vue
1<template> 2 <ValidationObserver v-slot="{ valid }"> 3 <input id="display-none-text" type="text" :value="valid" @change="changeStatus"> 4 <form class="form-row"> 5 <div class="form-group col-6"> 6 <label :for="'userName">ユーザー名</label> 7 <ValidationProvider name="ユーザー名" rules="required|alpha_num"> 8 <div slot-scope="ProviderProps"> 9 <input class="form-control" type="text" :id="userName"> 10 <p class="error">{{ ProviderProps.errors[0] }}</p> 11 </div> 12 </ValidationProvider> 13 </div> 14 </form> 15 </ValidationObserver> 16</template> 17<script> 18 export default { 19 methods: { 20 changeStatus: function(){ 21 console.log('validステータスが変わりました。') 22 } 23 } 24 } 25</script> 26
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/14 03:20