Recent Posts
Recent Comments
게으른개발너D
유효성 검사 (email, password) 본문
App.js (유효성 검사 실행을 불러올 컴포넌트)
유효성 검사를 실행할 email과 password input form을 불러온다.
form을 submit 할 버튼에 addEventListener로 유효성 검사를 실행할 VerifyForms class의 instance를 만든다.
import VerifyForms from 'VerifyForms.js';
class App {
constructor({ $target }) {
this.$target = $target;
this.$email = document.querySelector("#email");
this.$password = document.querySelector("#password");
this.$btn = document.querySelector("#btn");
this.initialSetting();
}
initialSetting = () => {
this.$btn.addEventListener("click", this.submit);
}
submit = () => {
new VerifyForms({
$email: this.$email,
$password: this.$password,
});
}
}
export default App;
VerifyForms.js
각각의 field의 value를 가져와 유효성 검사를 실행한다.
class VerifyForms {
constructor({ $email, $password }) {
this.$email = $email;
this.$password = $password;
this.render();
}
// 이메일 입력조건 (return {boolean))
verifyEmail = () => {
const value = this.$email.value;
const regex = /^[a-zA-Z0-9\.]+@[a-z0-9-_\.]+\.co$/;
return regex.test(value.trim());
};
// 패스워드 길이 (return {boolean))
verifyPasswordSize = (min, max) => {
const value = this.$password.value;
const len = value.length;
return len < min || len > max ? false : true;
};
// 패스워드 입력조건 (return {boolean))
verifyPassword = () => {
const value = this.$password.value;
const regex = /^(?=.*[a-zA-Z])(?=.*[!@~])(?=.*[0-9])[a-zA-Z0-9!@~]{8,20}$/;
return regex.test(value.trim());
};
// 폼 필드 입력 여부 (return {boolean))
verifyEnteredInFeild = () => {
return [this.$email, this.$password].every(
(input) => input.value.trim() !== ""
);
};
// 로그인 성공시
successVerified = () => {
alert("로그인 성공!");
}
render = () => {
const validations = [
{
fn: this.verifyEnteredInFeild,
errMsg: "아이디 혹은 비밀번호가 입력되지 않았습니다.",
},
{
fn: this.verifyEmail,
errMsg: "이메일 형식이 올바르지 않습니다.",
},
{
fn: this.verifyPasswordSize(8, 20),
errMsg: "비밀번호는 최소 8자 이상, 최대 20자 이하로 구성해야 합니다.",
},
{
fn: this.verifyPassword,
errMsg: "비밀번호는 영문, 숫자, 특수문자를 모두 포함해야 합니다.",
},
];
for (let validation of validations) {
if (!validation.fn.call(this)) {
alert(validation.errMsg);
return;
}
}
this.successVerified();
};
}
export default VerifyForms;
유효성 검사 조건의 예시는 다음과 같다.
password | |
1. 이메일 입력 조건
4. 이메일 입력 조건 예시
|
1. 비밀번호 입력 조건
|
const regex = /^[a-zA-Z0-9\.]+@[a-z0-9-_\.]+\.co$/; | const regex = /^(?=.*[a-zA-Z])(?=.*[!@~])(?=.*[0-9])[a-zA-Z0-9!@~]{8,20}$/; |
|
|
Comments