Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
E qual seria essa expressão para regular?
Eu achei para números que é a que está abaixo, mas como coloco as 2 barras junto?
/^\s\d+\s$/
em jsp uso:
function Formatadata(Campo, teclapres){
var tecla = teclapres.keyCode;
var vr = new String(Campo.value);
vr = vr.replace("/", "");
vr = vr.replace("/", "");
vr = vr.replace("/", "");
tam = vr.length + 1;
if (tecla != 8 && tecla != 8){
if (tam > 0 && tam < 2)
Campo.value = vr.substr(0, 2) ;
if (tam > 2 && tam < 4)
Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2);
if (tam > 4 && tam < 7)
Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 7);
}
}
no campo coloco:
onkeyup="Formatadata(this,event)"
use o plugins maskedinput do jquery
Baixe o plugin neste link
https://github.com/digitalBush/jquery.maskedinput
E lá existe uma pasta DEMO onde vc tem alguns exemplos para aprender
// apenas números
function onlyNumber( event ){
var key = event.which || event.keyCode;
if( key != 8 && isNaN( String.fromCharCode( key ) ) ){
event.preventDefault();
}
}
use:
<input type="text" name="data" onkeypress="onlyNumber(event);" onkeyup="formatar_data(this);" style="text-align:right"/>
use expressão regular para validar.