생활
Vue v-for 에서 input 폼 검증
안녕하세요.
현재 폼검증을 만들고 있습니다만.
유효성 검사 실패시 나오는 문구가 동시에 나와서 이것을 어떻게 나눠줘야 할지 궁금합니다. 소스 자르고 수정해서 올리느라 v-for :key 값 없는 데이터 이런거는 양해부탁드립니다.
<div v-for="Accounts in AccountArrays" :key="Accounts.id"> <input :type="Accounts.type" :id= :placeholder="Accounts.title" v-model="Accounts.value" /> <p v-if="ValidatorEvent.Error"> {{ ValidatorEvent.Error[0] }} </p> </div> <script> import Validator from "../../assets/js/Validate"; data() { return { AccountArrays: [ { title: "이메일", value: "", }, { title: "핸드폰 번호", value: "", }, { title: "비밀번호", value: "", }, { title: "추천인", value: "", }, ], ValidatorEvent: { Error: "", }, }; }, watch: { "AccountArrays.0.value": function (value) { this.ValidatorEvent.Error = Validator.Validate("Email", value); }, "AccountArrays.1.value": function (value) { this.ValidatorEvent.Error = Validator.Validate("Phone", value); }, "AccountArrays.2.value": function (value) { this.ValidatorEvent.Error = Validator.Validate("PassWord", value); }, "AccountArrays.3.value": function (value) { this.ValidatorEvent.Error = Validator.Validate("Referral", value); }, }, </script>Validate.js
우선은 유효성 검사 없이 경고메시지 뜨는것을 보기 위해 작성되었습니다.
export default { Validate(type, value) { let Temporary = []; let Length; let Content; let Empty; switch (type) { case "Email": Length = 3; Content = "이메일 형식에 맞게 입력해주세요."; Empty = "이메일을 입력해주세요."; break; case "Phone": Length = 3; Content = "핸드폰 번호에 형식에 맞게 입력해주세요."; Empty = "핸드폰 번호를 입력해주세요."; break; case "PassWord": Length = 3; Content = "영문, 숫자를 포함하여 8자 이상입니다."; Empty = "비밀번호를 입력해주세요."; break; case "Referral": Length = 3; Content = ""; Empty = ""; break; } if (!value) { Temporary.push(Empty); } else { Temporary.push(Content); // if (value.length < Length) { // Temporary.push(Content); // } } return Temporary; }, };