JavaScript
JS | form 객체
개발 공부
2023. 1. 4. 14:09
form 객체는 document 객체의 하위 객체 중 하나입니다.
form을 이용하면 form 유효성 검사들을 할 수 있습니다.
form객체는 document의 하위 객체이므로 유일하게 name속성으로 선택이 가능합니다.
ex) document.폼명.요소명
전부 암기합니다.
속성 값 | 설명 |
value | input, textarea 요소의 value 값을 반환합니다 |
checked | checkbox 나 radio 가 체크되어 있으면 true, 체크되어 있지 않으면 false 를 반환합니다 |
disabled | 요소가 활성화 상태이면 false, 비활성 상태이면 true 를 반환 |
length | 요소의 개수를 반환 |
focus() | 요소의 포커스를 맞춥니다 |
blur() | 요소의 포커스를 없애 줍니다 |
submit() | form의 값을 전송합니다 |
reset() | form의 값을 초기화 합니다 |
focus는 동작후 입력 값이 틀렸을 때 틀린 input에 focus를 맞춰주는 기능입니다.
예제 1 ) form객체 이용하기
html ↓↓↓
<form action="list.board" name="actionForm">
<h3>가입창</h3>
이름 : <input type="text" name="name"> <br>
번호 : <input type="text" name="phone" onblur="autoHypen()"> <br>
<!--onblur : 포커스가 나갈 때-->
분야 :
<input type="checkbox" name = "check">CSS
<input type="checkbox" name = "check">JS
<input type="checkbox" name = "check">HTML
<input type="submit" value="submit">
</form>
script
↓↓↓
/*
1.form태그는document의 자식이라서 form의 document.폼네임 접근이 가능합니다.
2.input은 form의 자식이라서 document.폼네임.태그name으로 접근이 가능합니다.
*/
// console.log(document.actionForm);
// console.log(document.actionForm.name);
// console.log(document.actionForm.phone);
var submit = document.actionForm.querySelector("input[type='submit']");
submit.onclick = function(){
event.preventDefault(); //서브밋의 고유 이벤트 제거
if(document.actionForm.name.value.length <= 0){ //8자미만
alert('이름을 입력해주세요');
document.actionForm.name.focus(); //포커싱
return; //반드시 함수종료
} else if(document.actionForm.phone.value.length != 11){
alert('번호를 제대로 입력해주세요');
document.actionForm.phone.focus();
return;
} else { //체크박스
var chk = document.actionForm.check;
var cnt = 0;
for(var i = 0; i < chk.length; i++){
console.log(chk[i].checked);
if(chk[i].checked){
cnt++;
}
}
if(cnt == 0) {alert('1개 이상 선택해주세요');
return;}
}
document.actionForm.submit(); //폼.submit();
}
//하이픈 없애주는 함수
function autoHypen(){
event.target.value = event.target.value.replaceAll("-","");
}
예제 2 ) 정규표현식을 이용하여 가입조건 체크하기
정규표현식 test 함수
html ↓↓↓
<form action = "list.board" name = "joinForm">
<h3>회원가입</h3>
ID <input type="text" name="id" placeholder="문자와 숫자" onkeypress="enter()"><br>
PW<input type="text" name="pw" placeholder="숫자,영문자,특수문자 최소 한개" onkeypress="enter()"><br>
생략...<br>
<button type="button" onclick="joinCheck()">가입</button>
</form>
script↓↓↓
function joinCheck(){ //가입 조건 체크
// var regExp = /^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+]).{4,8}$/; //4글자 이상 8글자 이하
// if(!regExp.test("aaabbb1!")){
// console.log("정규표현식 만족하지 않음");
// }
var regExp1 = /^[A-Za-z0-9]{5,10}$/; //5이상 11이하
var regExp2 = /^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+]).{4,8}$/; //4글자 이상 8글자 이하
var form = document.joinForm; //폼태그
if(!regExp1.test(form.id.value)){
alert("아이디는 영문자와 숫자포함 5~10자로 입력하세요");
form.id.focus();
return;
} else if(!regExp2.test(form.pw.value)){
alert("비밀번호는 영문자 숫자 특수문자 포함 4~8자로 입력하세요");
form.pw.focus();
return;
} else {
form.submit(); //폼을 전송
}
}
//ux 엔터키값 처리
function enter(){
if(event.keyCode == 13){ //keyCode는 사용자가 누른 키보드 번호 enter==13
joinCheck();
}
}