폼체크용 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로 비교함
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자