🍁유효성 검사
유효성 검사는 잘못된 값을 찾는 것이다.
폼 태그에 대해서는 위 글을 참고하도록 하자.
유효성 검사 조건
이름
- 필수값
- 2~5자 이내 입력
- 한글만 입력
나이
- 필수값
- 숫자만 입력
- 범위 검사
아이디
- 필수값
- 4~12자 이내
- 영어, 숫자, _ 혼용 사용 가능
- 숫자로 시작 불가
위 요구사항에 맞게 유효성 검사를 해보도록 하자.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#tbl1 {
border: 1px solid #CCC;
border-collapse: collapse;
box-shadow: 0px 0px 3px #CCC;
margin-bottom: 10px;
}
#tbl th, #tbl1 td {
border: 1px solid #CCC;
padding: 5px 10px;
}
#tbl1 th {
background-color: #EEE;
}
</style>
</head>
<body>
<h1>회원 가입</h1>
<form name="form1" action="ex25_ok.jsp">
<table id="tbl1">
<tr>
<th>이름</th>
<td><input type="text" name="txtname"></td>
</tr>
<tr>
<th>나이</th>
<td><input type="number" name="txtage" min="19" max="100"></td>
</tr>
<tr>
<th>아이디</th>
<td><input type="text" name="txtid"></td>
</tr>
<tr>
<th>암호</th>
<td><input type="password" name="txtpw"></td>
</tr>
<tr>
<th>암호확인</th>
<td><input type="password" name="txtpwc"></td>
</tr>
</table>
<input type="button" value="가입하기" name="btnSubmit">
</form>
<script>
document.form1.btnSubmit.onclick = m1;
function m1() {
//유효성 검사
var txtname = document.form1.txtname;
var txtage = document.form1.txtage;
var txtid = document.form1.txtid;
var txtpw = document.form1.txtpw;
var txtpwc = document.form1.txtpwc;
//이름 확인
if (txtname.value == '') {
alert('이름을 입력하세요.');
txtname.focus();
return;
}
if (txtname.value.length < 2 || txtname.value.length > 5) {
alert('2~5자 이내의 이름을 입력하세요.');
// txtname.value = ''; //텍스트 박스 초기화
txtname.select();
return;
}
for (var i=0; i<txtname.value.length; i++) {
var c = txtname.value.charAt(i);
if (c < '가' || c > '힣') {
alert('한글만 입력하세요.');
txtname.select();
return;
}
}
//나이 확인
if (txtage.value == '') {
alert('나이를 입력하세요.');
txtage.focus();
return;
}
//아이디 확인
var regex = /[A-Aa-z_][A-Za-z0-9_]{4,12}/; //정규식 객체
if (!regex.text(txtid.value)) {
alert('아이디가 올바르지 않습니다.');
txtid.select();
return;
}
//암호 확인
if (txtpw.value != txtpwc.value) {
alert('암호가 동일하지 않습니다');
txtpw.focus();
return;
}
document.form1.submit(); //폼 전송 함수
}
</script>
</body>
</html>
유효성 검사를 하여 값을 올바르게 입력했을 때에만 전송이 되어야 한다.
그런데 버튼은 오로지 전송을 목적으로 태어났다. onclick이벤트가 걸리면 이벤트 실행과 동시에 전송이 되기 때문에 '가입하기' 버튼에 onclick 이벤트를 걸면 안 된다.
submit 버튼을 일반 버튼으로 변경
<input type="button" value="가입하기" name="btnSubmit">
이를 해결하는 방법 중 하나는 submit 버튼이 아닌 일반 버튼으로 만드는 것이다.
submit 함수
function m1() {
document.form1.submit(); //폼 전송 함수
}
전송버튼이 아니더라도 폼 객체를 찾아 submit 함수를 호출하면 submit 버튼을 누른 것처럼 데이터가 전송된다.
focus 함수
//이름 유효성 검사
if (txtname.value == '') {
alert('이름을 입력하세요.');
txtname.focus();
return;
}
유효성 검사로 이름을 입력하지 않고 전송 버튼을 누른 경우에는 이름을 입력할 수 있게 focus 함수를 사용할 수 있다.
select 함수
txtname.select();
select 함수는 입력한 내용을 드래그해서 선택해준다.
정규식 객체
var regex = /[A-Aa-z_][A-Za-z0-9_]{4,12}/;
정규 표현식에 대해서는 위 글을 참고하도록 한다.