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 일떄 판단에 문제가 생깁니다.
네~~ 조언 감사합니다.
답글삭제바로 수정하도록 하겠습니다 ^^