quarta-feira, 26 de setembro de 2012

Javascript e expressões regulares na introdução de datas

A entrada de datas também é algo bem problemático, e alguns desenvolvedores tentaram solucionar apresentando o calendário logo que o campo INPUT correspondente recebe o foco. No entanto, em se tratando de datas muito passadas, a pessoa tem que voltar anos e meses neste calendário (data de admissão, data de nascimento, data de adesão e etc). Neste caso, é preciso digitar a data.

Por esta razão, construímos uma função javascript para checagem da data campo a campo:


function nome_onChange(o){
var str = o.value;
var ori = str;

// Teste de caracteres estranhos
var RegExp = /[\d|\-|\+](\.|\,|\;|\:|\'|\"|\!|\@|\#|\$|\%|\¨|\&|\*|\(|\)|\_|\-|\+|\=|\s|\{|\}|\`|\´|\^|\~|\[|\])/;
var ar = str.match(RegExp);
if( ar != null ) {
// caracter detectado
str = str.replace(ar[1],'/');
o.value = str;
}
var RegExp = /^(\d{1,2})\/(\d{1,2})\/(\d{1,4})|(\d{1,2})\/(\d{1,2})|(\d{1,2})$/;
var ar = ori.match(RegExp);
if( ar != null ) {
// caracter detectado
window.status = ar[1]+"-"+ar[2]+"-"+ar[3]+"-"+ar[4]+"-"+ar[5]+"-"+ar[6];
// Só dia
if( ar[6] != "" ){
if( parseInt(ar[6]) > 31 ){ alert("Dia inválido");}
} else {
// Dia e mês
if( ar[4] != "" ){
if( parseInt(ar[4]) > 31 ){ alert("Dia inválido"); }
if( parseInt(ar[5]) > 12 ){ alert("Mês inválido"); }
} else {
// Dia, mês e ano
if( ar[1] != "" ){
if( parseInt(ar[1]) > 31 ){ alert("Dia inválido"); }
if( parseInt(ar[2]) > 12 ){ alert("Mês inválido"); }
if( parseInt(ar[3]) > 2999 ){ alert("Ano inválido"); }
}
} // do if( ar[4] ...
} // do if( parseInt(ar[6]) ...
} // do if( ar != ...
}

E no HTML colocamos o código de INPUT:

<input name="Data" id="Data" type="text" size="10" onKeyUp="nome_onChange(this);">







Nenhum comentário:

Postar um comentário