필드 유효성 검사 > 기술자료 | 해피정닷컴

필드 유효성 검사 > 기술자료

본문 바로가기

사이트 내 전체검색

필드 유효성 검사 > 기술자료

JavaScript 필드 유효성 검사

페이지 정보


본문

prototype.js

<script type="text/javascript>
//  1. 입력값이 NULL인지 체크  // isNull(0
//  2. 입력값에 스페이스 이외의 의미있는 값이 있는지 체크  // isEmpty()
//  3. 입력값에 특정 문자(chars)가 있는지 체크  // containsChars()
//  4. 입력값이 특정 문자(chars)만으로 되어있는지 체크  // containsCharsOnly()
//  5. 입력값이 알파벳인지 체크  // isAlphabet()
//  6. 입력값이 알파벳 대문자인지 체크  // isUpperCase
//  7. 입력값이 알파벳 소문자인지 체크  // isLowerCase
//  8. 입력값에 숫자만 있는지 체크  // isNumber
//  8-2. 입력값에 숫자만 있는지 체크   // isNum
//  9. 입력값이 알파벳,숫자로 되어있는지 체크  // isAlphaNum
// 10. 입력값이 숫자,대시(-)로 되어있는지 체크  // isNumDash
// 11. 입력값이 숫자,콤마(,)로 되어있는지 체크  // isNumComma
// 12. 입력값이 사용자가 정의한 포맷 형식인지 체크  // isValidFormat
// 13. 입력값이 이메일 형식인지 체크  // isValidEmail
// 14. 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크  // isValidPhone
// 15. 입력값의 바이트 길이를 리턴  // getByteLength
// 16. 입력값에서 콤마를 없앤다.  // removeComma
// 17. 선택된 라디오버튼이 있는지 체크  // hasCheckedRadio
// 18. 선택된 체크박스가 있는지 체크  // hasCheckedBox
// 19. 사업자 등록번호 유효성 체크  // chkbusin_num
// 19-2. 사업자 등록번호 유효성 체크  // checkBizID


// 1. 입력값이 NULL인지 체크
function isNull(input) {
  if (input.value == null input.value == "") {
    return true;
  }
  return false;
}

// 1-2. 입력값이 NULL인지 체크
function isEmpty(pValue){
  if( (pValue == "") || (pValue == null) ){
    return true;
  }
  return false;
}

// 2. 입력값에 스페이스 이외의 의미있는 값이 있는지 체크
// ex) if (isEmpty(form.keyword)) {
//       alert("검색조건을 입력하세요.");
// }
function isEmpty(input) {
  if (input.value == null input.value.replace(/ /gi,"") == "") {
    return true;
  }
  return false;
}

// 3. 입력값에 특정 문자(chars)가 있는지 체크
// 특정 문자를 허용하지 않으려 할 때 사용
// ex) if (containsChars(form.name,"!,*&^%$#@~;")) {
//       alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
// }
function containsChars(input,chars) {
  for (var inx = 0; inx < input.value.length; inx++) {
    if (chars.indexOf(input.value.charAt(inx)) != -1)
    return true;
  }
  return false;
}

// 4. 입력값이 특정 문자(chars)만으로 되어있는지 체크
// 특정 문자만 허용하려 할 때 사용
// ex) if (!containsCharsOnly(form.blood,"ABO")) {
//       alert("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다.");
// }
function containsCharsOnly(input,chars) {
  for (var inx = 0; inx < input.value.length; inx++) {
    if (chars.indexOf(input.value.charAt(inx)) == -1)
    return false;
  }
  return true;
}

// 5. 입력값이 알파벳인지 체크
// 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
// 자주 쓰이는 경우에는 var chars 변수를
// global 변수로 선언하고 사용하도록 한다.
// ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//       var lowercase = "abcdefghijklmnopqrstuvwxyz";
//       var number = "0123456789";
//       function isAlphaNum(input) {
//         var chars = uppercase + lowercase + number;
//       return containsCharsOnly(input,chars);
//     }
function isAlphabet(input) {
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  return containsCharsOnly(input,chars);
}

// 6. 입력값이 알파벳 대문자인지 체크
function isUpperCase(input) {
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  return containsCharsOnly(input,chars);
}

// 7. 입력값이 알파벳 소문자인지 체크
function isLowerCase(input) {
  var chars = "abcdefghijklmnopqrstuvwxyz";
  return containsCharsOnly(input,chars);
}

// 8. 입력값에 숫자만 있는지 체크
function isNumber(input) {
  var chars = "0123456789";
  return containsCharsOnly(input,chars);
}

// 8-2. 입력값에 숫자만 있는지 체크
function isNum(str){
  if(isEmpty(str)) return false;
  for(var idx=0;idx < str.length;idx++){
    if(str.charAt(idx) < '0' || str.charAt(idx) > '9'){
      return false;
    }
  }
  return true;
}

// 9. 입력값이 알파벳,숫자로 되어있는지 체크
function isAlphaNum(input) {
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  return containsCharsOnly(input,chars);
}

// 10. 입력값이 숫자,대시(-)로 되어있는지 체크
function isNumDash(input) {
  var chars = "-0123456789";
  return containsCharsOnly(input,chars);
}

// 11. 입력값이 숫자,콤마(,)로 되어있는지 체크
function isNumComma(input) {
  var chars = ",0123456789";
  return containsCharsOnly(input,chars);
}

// 12. 입력값이 사용자가 정의한 포맷 형식인지 체크
// 자세한 format 형식은 자바스크립트의 `regular expression`을 참조
function isValidFormat(input,format) {
  if (input.value.search(format) != -1) {
    return true; //올바른 포맷 형식
  }
  return false;
}

// 13. 입력값이 이메일 형식인지 체크
// ex) if (!isValidEmail(form.email)) {
//       alert("올바른 이메일 주소가 아닙니다.");
// }
function isValidEmail(input) {
  // var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;
  var format = /^((\w[\-\.])+)@((\w[\-\.])+)\.([A-Za-z]+)$/;
  return isValidFormat(input,format);
}

// 14. 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
function isValidPhone(input) {
  var format = /^(\d+)-(\d+)-(\d+)$/;
  return isValidFormat(input,format);
}

// 15. 입력값의 바이트 길이를 리턴
// ex) if (getByteLength(form.title) > 100) {
//       alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
// }  // Author : Wonyoung Lee
function getByteLength(input) {
  var byteLength = 0;
  for (var inx = 0; inx < input.value.length; inx++) {
    var oneChar = escape(input.value.charAt(inx));
    if ( oneChar.length == 1 ) {
      byteLength ++;
    } else if (oneChar.indexOf("%u") != -1) {
      byteLength += 2;
    } else if (oneChar.indexOf("%") != -1) {
      byteLength += oneChar.length/3;
    }
  }
  return byteLength;
}

// 16. 입력값에서 콤마를 없앤다.
function removeComma(input) {
  return input.value.replace(/,/gi,"");
}

// 17. 선택된 라디오버튼이 있는지 체크
function hasCheckedRadio(input) {
  if (input.length > 1) {
    for (var inx = 0; inx < input.length; inx++) {
      if (input[inx].checked) return true;
    }
  } else {
    if (input.checked) return true;
  }
  return false;
}

// 18. 선택된 체크박스가 있는지 체크
function hasCheckedBox(input) {
  return hasCheckedRadio(input);
}

// 19. 사업자 등록번호 유효성 체크
function chkbusin_num() {
  var frm=document.code_01;
  var strCk1=frm.busin_num.value;
  var strCk2=frm.busin_num1.value;
  var strCk3=frm.busin_num2.value;
  var arrCkValue = new Array(10);
  arrCkValue[0] = ( parseFloat(strCk1.substring(0 ,1)) * 1 ) % 10;
  arrCkValue[1] = ( parseFloat(strCk1.substring(1 ,2)) * 3 ) % 10;
  arrCkValue[2] = ( parseFloat(strCk1.substring(2 ,3)) * 7 ) % 10;
  arrCkValue[3] = ( parseFloat(strCk2.substring(0 ,1)) * 1 ) % 10;
  arrCkValue[4] = ( parseFloat(strCk2.substring(1 ,2)) * 3 ) % 10;
  arrCkValue[5] = ( parseFloat(strCk3.substring(0 ,1)) * 7 ) % 10;
  arrCkValue[6] = ( parseFloat(strCk3.substring(1 ,2)) * 1 ) % 10;
  arrCkValue[7] = ( parseFloat(strCk3.substring(2 ,3)) * 3 ) % 10;
  intCkTemp = parseFloat(strCk3.substring(3 ,4)) * 5 + "0";
  arrCkValue[8] = parseFloat(intCkTemp.substring(0,1)) + parseFloat(intCkTemp.substring(1,2));
  arrCkValue[9] = parseFloat(strCk3.substring(4,5));
  intCkLastid = ( 10 - ( ( arrCkValue[0]+arrCkValue[1]+arrCkValue[2]+arrCkValue[3]+arrCkValue[4]+arrCkValue[5]+arrCkValue[6]+arrCkValue[7]+arrCkValue[8] ) % 10 ) ) % 10;
  if (arrCkValue[9] != intCkLastid) {
    alert ("잘못된 사업자등록번호입니다. 다시 확인해 주십시오");
    frm.busin_num.value="";
    frm.busin_num1.value="";
    frm.busin_num2.value="";
    frm.busin_num.focus();
    return;
  } else {
    frm.busin_kind.focus();
    return;
  }
}

// 19-2. 사업자 등록번호 유효성 체크
//사업자 등록번호에 '-'가 포함되어 있어도 상관없다.
function checkBizID(bizID)  //사업자등록번호 체크
{
  // bizID는 숫자만 10자리로 해서 문자열로 넘긴다.
  var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
  var tmpBizID, i, chkSum=0, c2, remander;
  bizID = bizID.replace(/-/gi,'');
 
  for (i=0; i<=7; i++) chkSum += checkID[i] * bizID.charAt(i);
  c2 = "0" + (checkID[8] * bizID.charAt(8));
  c2 = c2.substring(c2.length - 2, c2.length);
  chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));
  remander = (10 - (chkSum % 10)) % 10 ;
 
  if (Math.floor(bizID.charAt(9)) == remander) return true ; // OK!
    return false;
}
</script>


19-2. 사용예
<scipt>
        if (frm.biznumber.value=="")
        {
            alert("사업자등록번호를 입력하세요.");
            frm.biznumber.focus();
            return;
        }

        if (!checkBizID(frm.biznumber.value))
        {
            alert("올바른 사업자등록번호를 입력하세요.");
            frm.biznumber.focus();
            return;
        }
</script>


참고자료
http://blog.naver.com/yyoon159?Redirect=Log&logNo=50013705792
http://maruhosting.com/bbs/view.php?id=tip_js&no=8
http://sujunggusul.com/hikboard/board_view.php?tablename=bbs_all&index=156
http://sujunggusul.com/hikboard/board_view.php?tablename=bbs_all&index=155
http://blog.naver.com/cantabile31?Redirect=Log&logNo=10012669777  
http://blog.daum.net/newhyojun/7839869

댓글목록

등록된 댓글이 없습니다.


Total 152건 5 페이지
  • RSS
기술자료 목록
72
JavaScript   13562  2012-05-06 23:22  
71
JavaScript   21076  2012-05-03 13:48  
70
JavaScript   15319  2012-04-26 12:06 ~ 2012-05-26 00:00  
69
JavaScript   40641  2012-04-24 00:22  
68
JavaScript   36253  2012-04-19 23:06 ~ 2012-06-22 00:00  
67
JavaScript   15419  2012-04-06 21:01  
66
JavaScript   19175  2012-04-02 15:14  
65
JavaScript   16030  2012-03-12 23:33  
64
JavaScript   46443  2012-01-31 23:38 ~ 2022-12-06 10:11  
63
JavaScript   16098  2011-07-26 07:31  
62
JavaScript   38597  2011-07-26 06:59  
61
JavaScript   19569  2011-06-11 19:23 ~ 2011-06-12 00:00  
60
JavaScript   27049  2011-06-11 19:01  
59
JavaScript   14261  2010-09-13 20:55 ~ 2018-05-15 10:29  
58
JavaScript   20803  2010-06-12 11:55  
57
JavaScript   37869  2009-10-17 04:16  
열람
JavaScript   16957  2009-10-10 09:48 ~ 2013-10-21 00:00  
55
JavaScript   13143  2009-09-02 10:21  
54
JavaScript   18754  2009-07-03 10:25 ~ 2013-02-18 00:00  
53
JavaScript   24348  2009-04-28 12:28  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.