<div id="app"> <div class="form-area__name"> <p>名前</p> <input type="text" name="name" v-model="name"> <p v-if="isInValidName" class="error">名前は4文字以上で入力してください。</p> </div> <div class="form-area__email"> <p>メールアドレス</p> <input type="text" name="email" v-model="email"> <p v-if="isInValidEmail" class="error">メールアドレスの形式で入力してください。</p> </div> <div class="form-area__tel"> <p>電話番号</p> <input type="tel" name="tel" v-model="tel"> <p v-if="isInValidTel" class="error">電話番号は8桁で入力してください。</p> </div> </div> <script> new Vue({ el: '#app', data() { return { name: 'name', email: 'email@email.com', tel: '12345678' }; }, computed: { isInValidName() { return this.name.length < 4; }, isInValidEmail(){ const reg = new RegExp(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\.[A-Za-z0-9]{1,}$/); return !reg.test(this.email); }, isInValidTel() { const tel = this.tel; const isErr = tel.length < 8 || isNaN(Number(tel)); return isErr; } } }); </script>
やりたいことはわかるが、挙動がなんかちゃうな…