2012-12-07 2 views
1

예 : 예 : 예 : 필드가 있습니다. dd/mm/yyyy. 날짜가 올바른 형식이 아닌 경우 사용자가 계속 진행하도록 허용하지 않는 코드의 유효성을 검사합니다.간단한 자바 스크립트 유효성 검사

기본값은 dd/mm/yyy 인 새로운 필드가 있습니다. yyyy 필드. 사용자가이 필드를 dd/mm/yyyy와 같이 남겨두고 다른 필드를 입력하면 유효한 날짜 여야합니다. 따라서 dd/mm/yyyy가 허용되고 모든 유효한 날짜가 표시됩니다. 2012년 12월 12일

else if(!validateDate(document.lending.date.value)){alert("Please enter a valid date. The date must be of the format dd/mm/yyyy");document.lending.date.focus();return false;}               




function validateDate(thedate){ 
if(thedate.length <11) 
    { 
try{ 
    day = thedate.substring(0,2); 
    mmonth = thedate.substring(3,5); 
    year = thedate.substring(6,10); 
    if((thedate.charAt(2)!="/") || (thedate.charAt(5)!="/") || (day<1) || (day>31) ||  (mmonth<1) || (mmonth>12) || (year<1999) || (year>9999) ||  (!validateNumberWithoutDecimal(day)) || (!validateNumberWithoutDecimal(mmonth)) ||  (!validateNumberWithoutDecimal(year))) 
    { 
     return false; 
    } 
    else 
    return true; 
}catch(e){return false;} 
} 
else 
return false; 

} 

나는 새로운 기능 validateMyNewDate를 작성하고 그것을이 날짜를 확인하는대로/월/년의 aswell을 dd는 수락하도록 그렇게 할 생각 해요. 지금 내 논리와 약간 혼동스러워.

+0

그것은 당신의 기능이 얼마나 똑똑해야하는지에 달려 있습니다 (예 : 2 월 2 일을 감지합니까?). 지금까지는 februare 감지 기능이 없으므로 가장 좋은 방법은 regex :/^ (0? [1-9] | [12] [0-9] | 3 [01])와 같은 날짜를 정규식으로 바꾸는 것입니다. -] (0? [1-9] | 1 [012]) [\/\ -] \ d {4} $/(01/12/2012 및/또는 01-12-2012 – Najzero

답변

4

대신 Date 생성자를 사용하여 검증하는 시도 할 수 있습니다 :

var isValidDate = function(str) { 
    return !!new Date(str).getTime(); 
} 
그것은 '일/월/년'형식 작동합니다

, f.ex :

isValidDate('12/12/1999'); // true 
isValidDate('12/52/1999'); // false 

당신이 원하는 경우 사용자가 정확한 'dd/mm/yyyy'형식을 사용했는지 확인하고 정규 표현식과 결합 할 수 있습니다.

업데이트 : 추가되었으므로 valida 기본 입력 값은 "dd/mm/yyyy"입니다.

var isValidDate = function(str) { 
    return str == 'dd/mm/yyyy' || 
      (/^\d{2}\/\d{2}\/\d{4}$/.test(str) && new Date(str).getTime()); 
} 
+0

안녕하세요. 모든 코드에서 내 validateDate 함수에 만족하지만 사용자가 'dd/mm/yyyy'또는 유효한 날짜를 입력 할 수있게하려고합니다. 필드가 dd/mm/yyyy 덕분에 올바른 날짜를 넣으십시오. 감사합니다. – topcat3

+0

@ topcat3은'placeholder' 속성과 비슷합니까? – David

+0

예, 필드의 기본값은 dd/mm/yyyy입니다. 사용자를 원합니다. 이 필드를 변경하지 않고도 다음을 클릭 할 수 있지만 날짜를 확인하는 것으로 변경 한 경우 감사합니다. – topcat3

관련 문제