유효성 검사 기능 구현을 목표로 합니다. 사용자가 입력해야 할 데이터를 잘못된 형식으로 입력하거나, 입력하지 않은 상태에서 가입하기 버튼을 눌렀을 땐 에러가 발생하게 됩니다. 따라서 개발자는 에러가 발생하지 않게 사용자가 애플리케이션을 사용하도록 유도해야 합니다. 개발자 의도대로 사용자가 사용하도록 하기 위한 수단으로써 유효성 검사를 사용합니다.
만들고자 하는 유효성 검사는 [가입하기] 버튼을 눌렀을 때 가입 정보를 입력해야 할 항목란에 빈 곳이 없는지를 체크하는 것입니다. 전체적인 진행 과정은 먼저 각 항목이 정상적으로 입력이 되었다면 true를, 입력되지 않거나 잘못 입력한 경우 false를 반환하는데 사용하기 위한 변수를 선언할 것입니다. 그리고 버튼을 눌렀을 때 if문을 통해 순차적으로 각각의 항목란이 어떠한 상황인지에 따라 유효성 검사 변수를 반환하도록 하고, 유효성 검사 변수 모두가 true일 때 가입하기 메서드를 서버에 요청하도록 만들 것입니다.
//유효성 검사 통과 유무 변수
var idCheck = false;
var idckCheck = false; // 아이디 중복 검사
var pwCheck = false; // 비번
var pwckCheck = false; // 비번 확인
var pwckcorCheck = false; // 비번 확인 일치 확인
var nameCheck = false; // 이름
var mailCheck = false; // 이메일
var mailnumCheck = false; // 이메일 인증번호 확인
var addressCheck = false // 주소
//회원가입 버튼(회원가입 기능 작동)
$(".join_button").click(function(){
//$("#join_form").attr("action", "/member/join");
//$("#join_form").submit();
});
//회원가입 버튼(회원가입 기능 작동)
$(".join_button").click(function(){
/* 입력값 변수 */
var id = $('.id_input').val(); // id입력란
var pw = $('.pw_input').val(); // 비밀번호 입력란
var pwck = $('.pwck_input').val(); // 비밀번호 확인 입력란
var name = $('.user_input').val(); // 이름 입력란
var mail = $('.mail_input').val(); // 이메일 입력란
var addr = $('.address_input_3').val(); // 주소 입력란
//$("#join_form").attr("action", "/member/join");
//$("#join_form").submit();
});
<span class="final_id_ck">아이디를 입력해주세요.</span>
<span class="final_pw_ck">비밀번호를 입력해주세요.</span>
<span class="final_pwck_ck">비밀번호 확인을 입력해주세요.</span>
<span class="final_name_ck">이름을 입력해주세요.</span>
<span class="final_mail_ck">이메일을 입력해주세요.</span>
<span class="final_addr_ck">주소를 입력해주세요.</span>
/* 유효성 검사 문구 */
.final_id_ck{
display: none;
}
.final_pw_ck{
display: none;
}
.final_pwck_ck{
display: none;
}
.final_name_ck{
display: none;
}
.final_mail_ck{
display: none;
}
.final_addr_ck{
display: none;
}
/* 아이디 유효성 검사 */
if (id == "") {
$('.final_id_ck').css('display', 'block');
idCheck = false;
} else {
$('.final_id_ck').css('display', 'none');
idCheck = true;
}
//아이디 중복이 없는 경우
idckCheck = true;
//아이디 중복이 있는 경우
idckCheck = false;
/* 비밀번호 유효성 검사 */
if (pw = "") {
$('.final_pw_ck').css('display', 'block');
pwCheck = false;
} else {
$('.final_pw_ck').css('display', 'none');
pwCheck = true;
}
/* 비밀번호 확인 유효성 검사 */
if(pwck == ""){
$('.final_pwck_ck').css('display','block');
pwckCheck = false;
}else{
$('.final_pwck_ck').css('display', 'none');
pwckCheck = true;
}
일치, 불일치 여부에 대한 경고글 역할입니다. 클래스 속성명이 final_pwck_ck인 span태그 위치에 2개의 span태그를 추가합니다. 각 span 태그의 클래스 속성명은 아래와 같습니다.
<span class="pwck_input_re_1">비밀번호가 일치합니다.</span>
<span class="pwck_input_re_2">비밀번호가 일치하지 않습니다.</span>
추가한 span태그에 css속성을 추가합니다.
/* 비밀번호 확인 일치 유효성검사 */
.pwck_input_re_1{
color : green;
display : none;
}
.pwck_input_re_2{
color : red;
display : none;
}
/* 비밀번호 확인 일치 유효성 검사 */
$('.pwck_input').on("propertychange change keyup paste input", function() {
var pw = $('.pw_input').val();
var pwck = $('.pwck_input').val();
$('.final_pwck_ck').css('display', 'none');
if(pw == pwck){
$('.pwck_input_re_1').css('display','block');
$('.pwck_input_re_2').css('display','none');
pwckcorCheck = true;
}else{
$('.pwck_input_re_1').css('display','none');
$('.pwck_input_re_2').css('display','block');
pwckcorCheck = false;
}
});
/* 이름 유효성 검사 */
if(name == ""){
$('.final_name_ck').css('display','block');
nameCheck = false;
}else{
$('.final_name_ck').css('display', 'none');
nameCheck = true;
}
/* 이메일 유효성 검사 */
if(mail == ""){
$('.final_mail_ck').css('display','block');
mailCheck = false;
}else{
$('.final_mail_ck').css('display', 'none');
mailCheck = true;
}
/* 주소 유효성 검사 */
if(addr == ""){
$('.final_addr_ck').css('display','block');
addressCheck = false;
}else{
$('.final_addr_ck').css('display', 'none');
addressCheck = true;
}
mailnumCheck = true; // 일치할 경우
mailnumCheck = false; // 일치하지 않을 경우
/* 최종 유효성 검사 */
if(idCheck && idckCheck && pwCheck && pwckCheck && pwckcorCheck && nameCheck && mailCheck && mailnumCheck && addressCheck) {
$("#join_form").attr("action", "/member/join");
$("#join_form").submit();
}
return false;
전혀 입력하지 않고 가입하기 버튼을 누를 경우
일부만 제대로 입력한 경우
정상적으로 입력한 경우