Tenho abaixo o fonte de uma função que formata um campo em html que recebe uma data. Ela foi desenvolvida com o intuito de validar a data assim que o usuário digita. As barras já colocadas automaticamente. Em relação ao dia, a função não pode permitir que o usuário digite o dia sendo maior que 31. No primeiro dígito, a função funciona beleza... Mas no segundo dígito a função aceita qualquer número, e assim por diante, até o final.
Deixei o código completo pra ajudar. No html, chamo a função no evento "onkeyup", assim: onkeyup="formata(this);"
Como faço pra validar a digitação a partir do segundo dígito?
// função que coloca as barras na data
function formata(val)
{
var teste = false; // variavel booleana q será usada para teste apenas
var pass = val.value;
var expr = /[0123456789]/;
for(i=0; i<pass.length; i++)
{
// charAt -> retorna o caractere posicionado no índice especificado
var lchar = val.value.charAt(i);
var nchar = val.value.charAt(i+1);
var ichar = val.value.charAt(i+2); //ichar significa invalid char
if (i == 0)
{
// search -> retorna um valor inteiro, indicando a posição do inicio da primeira
// ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
// instStr.search(expReg);
if ((lchar.search(expr) != 0) || (lchar>3)) val.value = "";
}
else if(i == 1)
{
if (lchar.search(expr) != 0){
// substring(indice1,indice2)
// indice1, indice2 -> será usado para delimitar a string
var tst1 = val.value.substring(0,(i));
val.value = tst1;
continue;
}
if ((nchar != '/') && (nchar != '')){
var tst1 = val.value.substring(0, (i)+1);
if(nchar.search(expr) != 0)
var tst2 = val.value.substring(i+2, pass.length);
else
var tst2 = val.value.substring(i+1, pass.length);
val.value = tst1 + '/' + tst2;}
} // fim else if
else if (i == 3)
{
if (lchar.search(expr) != 0){
var tst1 = val.value.substring(0,(i));
val.value = tst1;
}
}
else if(i == 4)
{
if(lchar.search(expr) != 0)
{
var tst1 = val.value.substring(0, (i));
val.value = tst1;
continue;
}
if ((nchar != '/') && (nchar != ''))
{
var tst1 = val.value.substring(0, (i)+1);
if(nchar.search(expr) != 0)
var tst2 = val.value.substring(i+2, pass.length);
else
var tst2 = val.value.substring(i+1, pass.length);
val.value = tst1 + '/' + tst2;
}
} // fim else if
if(i >= 6)
{
if(lchar.search(expr) != 0)
{
var tst1 = val.value.substring(0, (i));
val.value = tst1;
}
}
} // fim for
if (pass.length>10)
val.value = val.value.substring(0, 10);
return true;
} // fim função
Pergunta
MxPirex
Galera, preciso de um help.
Tenho abaixo o fonte de uma função que formata um campo em html que recebe uma data. Ela foi desenvolvida com o intuito de validar a data assim que o usuário digita. As barras já colocadas automaticamente. Em relação ao dia, a função não pode permitir que o usuário digite o dia sendo maior que 31. No primeiro dígito, a função funciona beleza... Mas no segundo dígito a função aceita qualquer número, e assim por diante, até o final.
Deixei o código completo pra ajudar. No html, chamo a função no evento "onkeyup", assim: onkeyup="formata(this);"
Como faço pra validar a digitação a partir do segundo dígito?
Quem puder ajudar, agradeço!
[]'s :thumbsup:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.