<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>
やりたいことはわかるが、挙動がなんかちゃうな…