🧩html
<body>
<form class="form-horizontal" name="join_form" id="join_form">
<div class="form-group">
<label for='user_id' class="col-md-2">아이디 <span class='identify'>*</span></label>
<div class="col-md-10">
<input type="text" name="user_id" id="user_id" class="form-control" />
</div>
</div>
<div class="form-group">
<label for='user_pw' class="col-md-2">비밀번호 <span class='identify'>*</span></label>
<div class="col-md-10">
<input type="password" name="user_pw" id="user_pw" class="form-control" />
</div>
</div>
<div class="form-group">
<label for='user_pw' class="col-md-2">비밀번호 확인 <span class='identify'>*</span></label>
<div class="col-md-10">
<input type="password" name="user_pw_re" id="user_pw_re" class="form-control" />
</div>
</div>
<div class="form-group">
<label for='user_name' class="col-md-2">이름 <span class='identify'>*</span></label>
<div class="col-md-10">
<input type="text" name="user_name" id="user_name" class="form-control" />
</div>
</div>
<div class="form-group">
<label for='email' class="col-md-2">이메일 <span class='identify'>*</span></label>
<div class="col-md-10">
<input type="email" name="email" id="email" class="form-control" />
</div>
</div>
<div class="form-group">
<label for='tel' class="col-md-2">연락처 <span class='identify'>*</span></label>
<div class="col-md-10">
<input type="tel" name="tel" id="tel" class="form-control" />
</div>
</div>
<div class="form-group">
<label for='gender1' class="col-md-2">성별 <span class='identify'>*</span></label>
<div class="col-md-10">
<label><input type='radio' name='gender' id='gender1' value='M'>남자</label>
<label><input type='radio' name='gender' id='gender2' value='F'>여자</label>
</div>
</div>
<div class="form-group">
<label for='gender1' class="col-md-2">수강과목 <span class='identify'>*</span></label>
<div class="col-md-10">
<label><input type='checkbox' name='subject' id='subject1' value='html'>HTML</label>
<label><input type='checkbox' name='subject' id='subject2' value='css'>CSS</label>
<label><input type='checkbox' name='subject' id='subject3' value='js'>Javascript</label>
<label><input type='checkbox' name='subject' id='subject4' value='jquery'>jQuery</label>
<label><input type='checkbox' name='subject' id='subject7' value='php'>PHP</label>
</div>
</div>
<div class="form-group">
<div class="text-center">
<button type="submit">가입하기</button>
<button type="reset">다시작성</button>
</div>
</div>
</form>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="regex.js"></script>
<script type="text/javascript">
$(function() {
$("#join_form").submit(function(e) {
e.preventDefault();
if (!regex.value('#user_id', '아이디를 입력하세요.')) { return false; }
if (!regex.eng_num('#user_id', '아이디는 영어와 숫자 조합만 입력 가능합니다.')) { return false; }
if (!regex.min_length('#user_id', 4, '아이디는 최소 4자 이상 입력 가능합니다.')) { return false; }
if (!regex.max_length('#user_id', 20, '아이디는 최대 20자 까지만 입력 가능합니다.')) { return false; }
if (!regex.value('#user_pw', '비밀번호를 입력하세요.')) { return false; }
if (!regex.min_length('#user_pw', 4, '비밀번호는 최소 4자 이상 입력 가능합니다.')) { return false; }
if (!regex.max_length('#user_pw', 20, '비밀번호는 최대 20자 까지만 입력 가능합니다.')) { return false; }
if (!regex.compare_to('#user_pw', '#user_pw_re', '비밀번호 확인이 잘못되었습니다.')) { return false; }
if (!regex.value('#user_name', '이름을 입력하세요.')) { return false; }
if (!regex.kor('#user_name', '이름은 한글만 입력 가능합니다.')) { return false; }
if (!regex.min_length('#user_name', 2, '이름은 최소 2자 이상 입력 가능합니다.')) { return false; }
if (!regex.max_length('#user_name', 20, '이름은 최대 20자 까지만 입력 가능합니다.')) { return false; }
if (!regex.value('#email', '이메일을 입력하세요.')) { return false; }
if (!regex.email('#email', '이메일 주소가 잘못되었습니다.')) { return false; }
if (!regex.value('#tel', '연락처를 입력하세요.')) { return false; }
if (!regex.phone('#tel', '연락처가 잘못되었습니다.')) { return false; }
if (!regex.check('input[name=gender]', '성별을 선택하세요.')) { return false; }
if (!regex.check('input[name=subject]', '과목을 선택하세요.')) { return false; }
if (!regex.check_min('input[name=subject]', 2, '과목은 2개 이상 선택하셔야 합니다.')) { return false; }
if (!regex.check_max('input[name=subject]', 3, '과목은 최대 3개까지 선택 가능합니다.')) { return false; }
alert("입력형식 검사 완료!!!");
});
});
</script>
</body>
🧩js
var regex = {
value: function(selector, msg) {
var target = $(selector);
if (!target.val()) {
alert(msg);
target.focus();
return false;
}
return true;
},
max_length: function(selector, len, msg) {
var target = $(selector);
if (target.val().length > len) {
alert(msg);
target.val("");
target.focus();
return false;
}
return true;
},
min_length: function(selector, len, msg) {
var target = $(selector);
if (target.val().length < len) {
alert(msg);
target.val("");
target.focus();
return false;
}
return true;
},
check: function(selector, msg) {
var checked = $(selector + ':checked');
if (checked.length < 1) {
alert(msg);
$(selector).eq(0).focus();
return false;
}
return true;
},
check_min: function(selector, min, msg) {
if ($(selector + ':checked').length < min) {
alert(msg);
$(selector).eq(0).focus();
return false;
}
return true;
},
check_max: function(selector, max, msg) {
if ($(selector + ':checked').length > max) {
alert(msg);
$(selector).eq(0).focus();
return false;
}
return true;
},
compare_to: function(origin, compare, msg) {
var src = $(origin);
var dsc = $(compare);
if (src.val() != dsc.val()) {
alert(msg);
src.val("");
dsc.val("");
src.focus();
return false;
}
return true;
},
field: function(selector, msg, regex_expr) {
var target = $(selector);
if (!target.val() || !regex_expr.test(target.val())) {
alert(msg);
target.val("");
target.focus();
return false;
}
return true;
},
num: function(selector, msg) {
return this.field(selector, msg, /^[0-9]*$/);
},
eng: function(selector, msg) {
return this.field(selector, msg, /^[a-zA-Z]*$/);
},
kor: function(selector, msg) {
return this.field(selector, msg, /^[ㄱ-ㅎ가-힣]*$/);
},
eng_num: function(selector, msg) {
return this.field(selector, msg, /^[a-zA-Z0-9]*$/);
},
kor_num: function(selector, msg) {
return this.field(selector, msg, /^[ㄱ-ㅎ가-힣0-9]*$/);
},
email: function(selector, msg) {
return this.field(selector, msg,
/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i);
},
cellphone: function(selector, msg) {
return this.field(selector, msg, /^01(?:0|1|[6-9])(?:\d{3}|\d{4})\d{4}$/);
},
telphone: function(selector, msg) {
return this.field(selector, msg, /^\d{2,3}\d{3,4}\d{4}$/);
},
jumin: function(selector, msg) {
return this.field(selector, msg, /^\d{6}[1-4]\d{6}/);
},
phone: function(selector, msg) {
var check1 = /^01(?:0|1|[6-9])(?:\d{3}|\d{4})\d{4}$/;
var check2 = /^\d{2,3}\d{3,4}\d{4}$/;
var target = $(selector);
if (!target.val() || (!check1.test(target.val()) && !check2.test(target.val()))) {
alert(msg);
target.val("");
target.focus();
return false;
}
return true;
}
};```