반응형
[2021.04.23 추가]
생각보다 많이 찾아주셔서 추가 설명 합니다.
_fnisDate에는 yyyy-mm-dd 식으로 보내도 되고 yyyymmdd 식으로 보내도 상관 없습니다.
//날짜 유효성 체크 (윤달 포함)
function _fnisDate(vDate) {
var vValue = vDate;
var vValue_Num = vValue.replace(/[^0-9]/g, ""); //숫자를 제외한 나머지는 예외처리 합니다.
//_fnToNull 함수는 아래 따로 적어두겠습니다.
if (_fnToNull(vValue_Num) == "") {
alert("날짜를 입력 해 주세요.");
return false;
}
//8자리가 아닌 경우 false
if (vValue_Num.length != 8) {
alert("날짜를 20200101 or 2020-01-01 형식으로 입력 해 주세요.");
return false;
}
//8자리의 yyyymmdd를 원본 , 4자리 , 2자리 , 2자리로 변경해 주기 위한 패턴생성을 합니다.
var rxDatePattern = /^(\d{4})(\d{1,2})(\d{1,2})$/;
var dtArray = vValue_Num.match(rxDatePattern);
if (dtArray == null) {
return false;
}
//0번째는 원본 , 1번째는 yyyy(년) , 2번재는 mm(월) , 3번재는 dd(일) 입니다.
dtYear = dtArray[1];
dtMonth = dtArray[2];
dtDay = dtArray[3];
//yyyymmdd 체크
if (dtMonth < 1 || dtMonth > 12) {
alert("존재하지 않은 월을 입력하셨습니다. 다시 한번 확인 해주세요");
return false;
}
else if (dtDay < 1 || dtDay > 31) {
alert("존재하지 않은 일을 입력하셨습니다. 다시 한번 확인 해주세요");
return false;
}
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) {
alert("존재하지 않은 일을 입력하셨습니다. 다시 한번 확인 해주세요");
return false;
}
else if (dtMonth == 2) {
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap)) {
alert("존재하지 않은 일을 입력하셨습니다. 다시 한번 확인 해주세요");
return false;
}
}
return true;
}
_fnToNull
데이터가 들어왔을떄 undefined 혹은 null일 경우 빈칸으로 넘기는 공통 함수 입니다.
//Null 값 ""
function _fnToNull(data) {
// undifined나 null을 null string으로 변환하는 함수.
if (String(data) == 'undefined' || String(data) == 'null') {
return ''
} else {
return data
}
}
'IT > JS + Jquery' 카테고리의 다른 글
[JavaScript]URL Get parameter(파라미터) 가져오기 (0) | 2021.02.17 |
---|---|
[Javascript]현재 달의 1일 ~ 말일 구하기 (0) | 2021.02.04 |
[Javascript]Date 원하는 날짜 세팅 (0) | 2020.12.02 |
[JavaScript] 시간숫자 HH:MM 포멧팅 (0) | 2020.11.27 |
[JavaScript]날짜 입력 시 무슨 요일인지 찾아주는 함수 (0) | 2020.11.27 |