폼체크용 JS 함수
//=== 폼체크용 (라디오는 하나는 필수체크, 그외에는 값이 있는지만 체크) function checkFillForm(f,passNames){ var els = f.elements; if(!passNames){ var skipFn = function(){return false;} }else if(passNames instanceof Function){ //이름 체크가 함수일 경우 var skipFn= function(fn){ return function(){ return fn(el); } }(passNames) }else if(passNames instanceof String){ //이름 체크가 숨표로 구분된 문자열일 경우 var skipFn = function(str){ return function(el){ var name = el.name; if(str.indexOf(name) != -1){ return true; } return false; } }(passNames) }
for(var i=0,m=els.length;i<m;i++){
var el = els[i];
if(el.name==''){continue;}
if(el.disabled){continue;}
if(el.value==undefined){//value 프로퍼티가 없는건 무시한다.(IE에서는 FIELDSET도 체크가 되네... 제길)
continue; // 스킵한다.
}
if(skipFn(el)){
continue; // 스킵한다.
}
if(el.type == 'radio'){
var elns = f[el.name]; //네임으로 콜렉션가져오기
var checked = false;
var t = null
if(elns.length || elns instanceof NodeList || elns instanceof Array){ //콜렉션이다.
t = elns[0];
for(var i2=0,m2=elns.length;i2<m2;i2++){
if(elns[i2].checked){
checked = true; break;
}
}
}else{ //단일 라디오
checked = elns.checked
t = elns;
}
if(!checked){
alert('선택 안 된 값이 있습니다.');
t.focus();
return false;
}
}else if(el.type == 'checkbox'){ //체크박스는 체크 안한다. 따로 처리하도록 해라
}else if(el.type == 'hidden'){ //히든값은 빈 값을 가질 수도 있다.
}else{
if(el.value.length==0){
alert('입력 안 된 값이 있습니다.');
el.focus();
return false;
}
}
}
return true; }
//== 체크함수 예제 var skipFn = function(el){ //여기 한곳에서 관리한다. var name = el.name if(name.indexOf(“SCH_INFO”)!== -1){ //학교정보들을 체크 안한다. return true; } var cl = el.className; if(cl.indexOf(“address2”)!== -1){ // 도로명주소 2번째 텍스트 박스를 체크 안한다. return true; }
return false; } - - - - - -
//== 사용법 예제 function checkFormAppc(f){ if(f.mode.value==’nextsave’){ return checkFillForm(f,skipFn); //빈값이 있으면 경고후 그 인풋엘레멘트로 포커스 이동시킨다. }else{ return true; } }
- 기본적으로 폼의 모든 값을 체크
- disabled, name이 없는 엘레멘트 등은 무시
- 값이 없으면 경고를 한 뒤 해당 부분으로 포커스 이동
- passNames 을 기준으로 스킵할 name을 지정함
- 문자열이면 문자열내에서 비교
- 함수면 name을 아규멘트로 넘겨서 true,false로 비교함