Somente números em campo com máscara de data
Caros amigos,
achei esta máscara para data, implementei mas o que acontece, o usuário cola assim ou xx/xx/xxxx.
Há alguma maneira para impedir o uso de letras e deixar só números?
Segue a função:
function formatar_data(campo,mensagem_erro){
comprimento = campo.value.length;
if (comprimento >10){
campo.value = campo.value.substr(0,10);
return;
}
if ((campo.value.charCodeAt(comprimento-1) < 48 || campo.value.charCodeAt(comprimento-1) > 57) && campo.value.charAt(comprimento-1)!="/" || comprimento>10){
campo.value = campo.value.substr(0,comprimento-1);
return;
}
if (comprimento==1) return;
primeira_barra=ultima_barra=0;
tecla = campo.value.charAt(comprimento-1);
primeira_barra = campo.value.indexOf("/");
ultima_barra = campo.value.lastIndexOf("/");
if (comprimento==2 && primeira_barra<0) campo.value += "/";
if (comprimento==5 && ultima_barra == primeira_barra) campo.value += "/";
if (tecla=="/"){
if (campo.value.charAt(comprimento-2)=="/") campo.value = campo.value.substr(0,comprimento-1);
if (ultima_barra==primeira_barra){
if (parseInt(campo.value.substr(0,comprimento-1))<10) campo.value = "0" + parseInt(campo.value.substr(0,comprimento-1)) + "/";
} else {
if (parseInt(campo.value.substr(primeira_barra+1,ultima_barra-1))<10){
if (campo.value.charAt(primeira_barra+1)=="0"){
posicao_parseInt = primeira_barra+2
} else {
posicao_parseInt = primeira_barra+1
}
campo.value = campo.value.substr(0,primeira_barra) + "/0" + parseInt(campo.value.substr(posicao_parseInt,ultima_barra-1)) + "/";
}
}
}
}
Obrigado pela atenção de todos.
Discussão (6)
Carregando comentários...