function jsDayCheck(Obj) { var strValue = Obj.value; var chk1 = /^(19|20)\d{2}-([1-9]|1[012])-([1-9]|[12][0-9]|3[01])$/; var chk2 = /^(19|20)\d{2}\/([0][1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$/; //var chk2 = /^(19|20)\d{2}-([0][1-9]|1[012])-([012][1-9]|3[01])$/; if (strValue == "") { // 공백이면 무시 return true; } //------------------------------------------------------------------------------- // 유효성 검사- 입력형식에 맞게 들왔는지 // 예) 2000-1-1, 2000-01-01 2가지 형태 지원 //------------------------------------------------------------------------------- if (chk1.test(strValue) == false && chk2.test(strValue) == false) { // 유효성 검사에 둘다 성공하지 못했다면 alert("1999-1-1 형식 또는 \r\n1999-01-01 형식으로 날자를 입력해주세요."); Obj.value = ""; Obj.focus = true; return false; } //------------------------------------------------------------------------------- // 존재하는 날자(유효한 날자) 인지 체크 //------------------------------------------------------------------------------- var bDateCheck = true; var arrDate = Obj.value.split("-"); var nYear = Number(arrDate[0]); var nMonth = Number(arrDate[1]); var nDay = Number(arrDate[2]); if (nYear < 1900 || nYear > 3000) { // 사용가능 하지 않은 년도 체크 bDateCheck = false; } if (nMonth < 1 || nMonth > 12) { // 사용가능 하지 않은 달 체크 bDateCheck = false; } // 해당달의 마지막 일자 구하기 var nMaxDay = new Date(new Date(nYear, nMonth, 1) - 86400000).getDate(); if (nDay < 1 || nDay > nMaxDay) { // 사용가능 하지 않은 날자 체크 bDateCheck = false; } if(bDateCheck == false) { alert("존재하지 않은 년월일을 입력하셨습니다. 다시한번 확인해주세요"); return false; } }
2012년 2월 21일 화요일
스크립트 날자 유효성 검사(TextBox)
피드 구독하기:
댓글 (Atom)
var chk2 = /^(19|20)\d{2}-([0][1-9]|1[012])-([012][1-9]|3[01])$/;
답글삭제문구를
var chk2 = /^(19|20)\d{2}\/([0][1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$/;
바꾸어야 할듯 보입니다.
안그러면 2012-10-10 을 잘못판단합니다.
일이 10, 20 일떄 판단에 문제가 생깁니다.
네~~ 조언 감사합니다.
답글삭제바로 수정하도록 하겠습니다 ^^