Essa é uma função para validação de datas em Javascript. Já a utilizo há um bom tempo e nunca tive problemas.
Essa função faz a validação, inclusive, da quantidade de dias no mes de fevereiro em função do ano.
function verificaData(Data)
{
var dma = -1;
var data = Array(3);
var ch = Data.charAt(0);
for(i=0; i < Data.length && (( ch >= '0' && ch <= '9' ) || ( ch == '/' && i != 0 ) ); ){
data[++dma] = '';
if(ch!='/' && i != 0) return false;
if(i != 0 ) ch = Data.charAt(++i);
if(ch=='0') ch = Data.charAt(++i);
while( ch >= '0' && ch <= '9' ){
data[dma] += ch;
ch = Data.charAt(++i);
}
}
if(ch!='') return false;
if(data[0] == '' || isNaN(data[0]) || parseInt(data[0]) < 1) return false;
if(data[1] == '' || isNaN(data[1]) || parseInt(data[1]) < 1 || parseInt(data[1]) > 12) return false;
if(data[2] == '' || isNaN(data[2]) || ((parseInt(data[2]) < 0 || parseInt(data[2]) > 99 ) && (parseInt(data[2]) < 1900 || parseInt(data[2]) > 9999))) return false;
if(data[2] < 50) data[2] = parseInt(data[2]) + 2000;
else if(data[2] < 100) data[2] = parseInt(data[2]) + 1900;
switch(parseInt(data[1])){
case 2: { if(((parseInt(data[2])%4!=0 || (parseInt(data[2])%100==0 && parseInt(data[2])%400!=0)) && parseInt(data[0]) > 28) || parseInt(data[0]) > 29 ) return false; break; }
case 4: case 6: case 9: case 11: { if(parseInt(data[0]) > 30) return false; break;}
default: { if(parseInt(data[0]) > 31) return false;}
}
return true;
}
0 comentários:
Postar um comentário