웹개발
Category
JSP/Servlet
ASP
ASP.NET
PHP
웹디자인
Category
Photoshop
Illustrator
Flash
클라이언트 스크립트
Category
●
Javascript Example
Javascript
CSS3
HTML5
데이타 베이스
Category
MySQL
MSSQL
커뮤니티
Category
공지사항
개발자마당
엔지니어마당
자유마당
플래쉬게임
여행과정보
질문과 답변
Category
웹개발 질문과답변
디자인 질문과답변
자료실
Category
이미지 자료실
개발 자료실
클럽
Category
자동차클럽
하늘소리
공이랑
Javascript Example
Javascript
CSS3
HTML5
Javascript Example
제 목
[DATE] 원하는 형식으로 날짜 입력받기
작성자
운영자
등록일
200806160105516
조회수
30,446
원하는 형식으로 날짜 입력받는 자바스크립트 소스입니다.
mm/dd/yyyy 형식
yyyy/mm/dd 형식
dd/mm/yyyy 형식
<!-- 1. 아래의 스크립트를 HEAD 부분에 복사 해 넣으세요 --> <script language="javascript"> <!-- var isNav4 = false, isNav5 = false, isIE4 = false var strSeperator = "/"; var vDateType = 3; // 날짜형식 // 1 = mm/dd/yyyy // 2 = yyyy/dd/mm // 3 = dd/mm/yyyy var vYearType = 4; // 네츠케이프용 2자리 혹은 4자리 연도 표기 var vYearLength = 2; // 사용자 입력 연도 자릿수 var err = 0; // 에러코드 디폴트값 if(navigator.appName == "Netscape") { if (navigator.appVersion < "5") { isNav4 = true; isNav5 = false; } else if (navigator.appVersion > "4") { isNav4 = false; isNav5 = true; } } else { isIE4 = true; } function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) { vDateType = dateType; if (vDateValue == "~") { alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator); vDateName.value = ""; vDateName.focus(); return true; } var whichCode = (window.Event) ? e.which : e.keyCode; if (vDateValue.length > 8 && isNav4) { if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1)) return true; } var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-"; if (alphaCheck.indexOf(vDateValue) >= 1) { if (isNav4) { vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } else { vDateName.value = vDateName.value.substr(0, (vDateValue.length-1)); return false; } } if (whichCode == 8) return false; else { var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105'; if (strCheck.indexOf(whichCode) != -1) { if (isNav4) { if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) { alert("Invalid Date\nPlease Re-Enter"); vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } if (vDateValue.length == 6 && dateCheck) { var mDay = vDateName.value.substr(2,2); var mMonth = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) if (mYear.length == 2 && vYearType == 4) { var mToday = new Date(); var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear; if (mCheckYear >= checkYear) mYear = '19' + mYear; else mYear = '20' + mYear; } var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (!dateValid(vDateValueCheck)) { alert("Invalid Date\nPlease Re-Enter"); vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } return true; } else { if (vDateValue.length >= 8 && dateCheck) { if (vDateType == 1) // mmddyyyy { var mDay = vDateName.value.substr(2,2); var mMonth = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear; } if (vDateType == 2) // yyyymmdd { var mYear = vDateName.value.substr(0,4) var mMonth = vDateName.value.substr(4,2); var mDay = vDateName.value.substr(6,2); vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay; } if (vDateType == 3) // ddmmyyyy { var mMonth = vDateName.value.substr(2,2); var mDay = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear; } var vDateTypeTemp = vDateType; vDateType = 1; var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (!dateValid(vDateValueCheck)) { alert("Invalid Date\nPlease Re-Enter"); vDateType = vDateTypeTemp; vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } vDateType = vDateTypeTemp; return true; } else { if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) { alert("Invalid Date\nPlease Re-Enter"); vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } } } } else { if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) { alert("Invalid Date\nPlease Re-Enter"); vDateName.value = ""; vDateName.focus(); return true; } if (vDateValue.length >= 8 && dateCheck) { if (vDateType == 1) // mm/dd/yyyy { var mMonth = vDateName.value.substr(0,2); var mDay = vDateName.value.substr(3,2); var mYear = vDateName.value.substr(6,4) } if (vDateType == 2) // yyyy/mm/dd { var mYear = vDateName.value.substr(0,4) var mMonth = vDateName.value.substr(5,2); var mDay = vDateName.value.substr(8,2); } if (vDateType == 3) // dd/mm/yyyy { var mDay = vDateName.value.substr(0,2); var mMonth = vDateName.value.substr(3,2); var mYear = vDateName.value.substr(6,4) } if (vYearLength == 4) { if (mYear.length < 4) { alert("Invalid Date\nPlease Re-Enter"); vDateName.value = ""; vDateName.focus(); return true; } } var vDateTypeTemp = vDateType; vDateType = 1; var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (mYear.length == 2 && vYearType == 4 && dateCheck) { var mToday = new Date(); var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear; if (mCheckYear >= checkYear) mYear = '19' + mYear; else mYear = '20' + mYear; vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (vDateTypeTemp == 1) // mm/dd/yyyy vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear; if (vDateTypeTemp == 3) // dd/mm/yyyy vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear; } if (!dateValid(vDateValueCheck)) { alert("Invalid Date\nPlease Re-Enter"); vDateType = vDateTypeTemp; vDateName.value = ""; vDateName.focus(); return true; } vDateType = vDateTypeTemp; return true; } else { if (vDateType == 1) { if (vDateValue.length == 2) { vDateName.value = vDateValue+strSeperator; } if (vDateValue.length == 5) { vDateName.value = vDateValue+strSeperator; } } if (vDateType == 2) { if (vDateValue.length == 4) { vDateName.value = vDateValue+strSeperator; } if (vDateValue.length == 7) { vDateName.value = vDateValue+strSeperator; } } if (vDateType == 3) { if (vDateValue.length == 2) { vDateName.value = vDateValue+strSeperator; } if (vDateValue.length == 5) { vDateName.value = vDateValue+strSeperator; } } return true; } } if (vDateValue.length == 10 && dateCheck) { if (!dateValid(vDateName)) { alert("Invalid Date\nPlease Re-Enter"); vDateName.focus(); vDateName.select(); } } return false; } else { if (isNav4) { vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } else { vDateName.value = vDateName.value.substr(0, (vDateValue.length-1)); return false; } } } } function dateValid(objName) { var strDate; var strDateArray; var strDay; var strMonth; var strYear; var intday; var intMonth; var intYear; var booFound = false; var datefield = objName; var strSeparatorArray = new Array("-"," ","/","."); var intElementNr; // var err = 0; var strMonthArray = new Array(12); strMonthArray[0] = "Jan"; strMonthArray[1] = "Feb"; strMonthArray[2] = "Mar"; strMonthArray[3] = "Apr"; strMonthArray[4] = "May"; strMonthArray[5] = "Jun"; strMonthArray[6] = "Jul"; strMonthArray[7] = "Aug"; strMonthArray[8] = "Sep"; strMonthArray[9] = "Oct"; strMonthArray[10] = "Nov"; strMonthArray[11] = "Dec"; //strDate = datefield.value; strDate = objName; if (strDate.length < 1) { return true; } for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) { if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) { strDateArray = strDate.split(strSeparatorArray[intElementNr]); if (strDateArray.length != 3) { err = 1; return false; } else { strDay = strDateArray[0]; strMonth = strDateArray[1]; strYear = strDateArray[2]; } booFound = true; } } if (booFound == false) { if (strDate.length>5) { strDay = strDate.substr(0, 2); strMonth = strDate.substr(2, 2); strYear = strDate.substr(4); } } //Adjustment for short years entered if (strYear.length == 2) { strYear = '20' + strYear; } strTemp = strDay; strDay = strMonth; strMonth = strTemp; intday = parseInt(strDay, 10); if (isNaN(intday)) { err = 2; return false; } intMonth = parseInt(strMonth, 10); if (isNaN(intMonth)) { for (i = 0;i<12;i++) { if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) { intMonth = i+1; strMonth = strMonthArray[i]; i = 12; } } if (isNaN(intMonth)) { err = 3; return false; } } intYear = parseInt(strYear, 10); if (isNaN(intYear)) { err = 4; return false; } if (intMonth>12 || intMonth<1) { err = 5; return false; } if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) { err = 6; return false; } if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) { err = 7; return false; } if (intMonth == 2) { if (intday < 1) { err = 8; return false; } if (LeapYear(intYear) == true) { if (intday > 29) { err = 9; return false; } } else { if (intday > 28) { err = 10; return false; } } } return true; } function LeapYear(intYear) { if (intYear % 100 == 0) { if (intYear % 400 == 0) { return true; } } else { if ((intYear % 4) == 0) { return true; } } return false; } // End --> </script> </HEAD> <!-- 2. BODY 태그안에 아래와 같이 함수를 복사해 넣으세요 --> <BODY BGCOLOR="#CCFF99" onLoad="document.dateTest.testDateFormat1.focus()"> <!-- 3. 아래와 같은 방법으로 BODY 부분에 스크립트를 입력하세요 --> <form name='dateTest'> <table border = '0' width='400' align=center> <tr> <td> <table align='center' border='1' width='400'> <tr> <td bgcolor='orange' width='75%' align=center> <font color='black'><B>mm/dd/yyyy 형식</B></font> </td> <td> <input type="text" name="testDateFormat1" size='10' maxlength="10" onFocus="javascript:vDateType='1'" onKeyUp="DateFormat(this,this.value,event,false,'1')" onBlur="DateFormat(this,this.value,event,true,'1')"> </td> </tr> </table> </td> </tr> <tr> <td> <table align='center' border='1' width='400'> <tr> <td bgcolor='orange' width='75%' align=center> <font color='black'><B>yyyy/mm/dd 형식</B></font> </td> <td> <input type="text" name="testDateFormat3" size='10' maxlength="10" onFocus="javascript:vDateType='2'" onKeyUp="DateFormat(this,this.value,event,false,'2')" onBlur="DateFormat(this,this.value,event,true,'2')"> </td> </tr> </table> </td> </tr> <tr> <td> <table align='center' border='1' width='400'> <tr> <td bgcolor='orange' width='75%' align=center> <font color='black'><B>dd/mm/yyyy 형식</B></font> </td> <td> <input type="text" name="testDateFormat5" size='10' maxlength="10" onFocus="javascript:vDateType='3'" onKeyUp="DateFormat(this,this.value,event,false,'3')" onBlur="DateFormat(this,this.value,event,true,'3')"> </td> </tr> </table> </td> </tr> </table> </form>
0
0
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
번호
제목
글쓴이
추천
조회
날짜
213
[BACK] 1분마다 배경색상이 변합니다.
운영자
0 /
1
24444
2008-07-01
212
[TABLE] 테이블을 이용한 스프레드시트 시뮬레이션
운영자
0 /
0
23739
2008-06-30
211
[INPUT BOX] RGB코드를 HEX 코드로 변화시켜줍니다.
운영자
0 /
0
23323
2008-06-28
210
[TIME] 방문자에게 홈페이지 머문시간 알려주기
운영자
0 /
0
23654
2008-06-28
209
[STATUS] 상태바에 지정된 날짜가 카운트다운 됩니다.
운영자
0 /
0
23468
2008-06-27
208
[INPUT BOX] 첫글자를 대문자로 바꿔주기
운영자
0 /
0
22959
2008-06-25
207
[TABLE] row cell을 insert 시킵니다.
운영자
0 /
0
22926
2008-06-24
206
[TIME] 실시간 ON-OFF 기능 시계
운영자
0 /
1
24424
2008-06-23
205
[INPUT BOX] 페이지내 검색하기!
운영자
0 /
0
24649
2008-06-19
204
[TABLE] 테이블 프레임
운영자
0 /
0
24091
2008-06-18
203
[BUTTON] 전송버튼을 누르면 전송중 표시가 됩니다.
운영자
0 /
0
23260
2008-06-17
202
[DATE] 원하는 형식으로 날짜 입력받기
운영자
0 /
0
30446
2008-06-16
201
[CALENDAR] 깔끔한 팝업 달력
운영자
0 /
0
31743
2008-06-14
200
[CALENDAR] 자동으로 해당 년/월 선택시 일자표시
운영자
0 /
0
24115
2008-06-14
199
[CALCULATOR] 계산기 III
운영자
0 /
0
23149
2008-06-13
198
[SEARCH] 구글 검색 자바스크립트
운영자
0 /
0
24221
2008-06-11
197
[POPUP] 팝업 자바스크립트 소스 생성기
운영자
0 /
0
23339
2008-06-10
196
[SECURITY] 암호화, 복호화 소스
운영자
2 /
0
25648
2008-06-08
195
[KEYCODE] 이벤트 키코드(event.keycode)를 알아내는 소스
운영자
0 /
0
23447
2008-06-08
194
[CHECKBOX] INPUT 박스에 입력된 내용이 정확하면 체크박스에 체크할 수 있는 소..
운영자
0 /
0
23326
2008-06-08
193
[TIME] 스탑워치! 스크립트
운영자
0 /
0
24368
2008-06-05
192
[CALENDAR] 현재시간과 달력을 표시해줍니다.
운영자
0 /
0
23623
2008-06-04
191
[TEXT] 흐르는메세지 출력
운영자
0 /
1
25733
2008-06-03
190
[BUTTON] 전송버튼이 페이딩 됩니다.
운영자
0 /
0
22751
2008-06-02
189
[INPUTBOX] 텍스트 입력시 Caps Lock 키를 체크합니다.
운영자
0 /
0
26955
2008-06-01
[1]
[2]
[3]
[4]
[5]
[6]
7
[8]
[9]
[10]
제목
내용
제목+내용
작성자