Bom dia, amigos...
Eu havia postado anteriormente um problema que eu possuía para
fazer validação de datas. Quebrei um pouco a cabeça pois os métodos prontos que existem para isso sempre possuem um defeito ou outro...
Tentei usar máscaras, tentei usar keycode, tentei usa which todos funcionavam... mas sempre pecavam em algum aspecto....
máscaras dificultam que o usuário apague uma barra automática, key code nao funciona no IE, e por aí vai....
cheguei a uma solução que nao usa nada disso, e funciona no IE e no FF...
é uma soluçãozinha Javascript, e mesmo que o usuário tente colar algo vindo de outro lugar no campo, será corrigdo....e como um script basta criar uma paginazinha simples .html com o código abaixo para ver o funcionamento...
ps:coloquei esse no esquema mm/aa se precisarem de dd/mm/aaaa ou dd/mm/aa é só continuar a lógica do mm/aa...
como poucas pessoas me sugeriram soluções eu deduzi que isso possa vir ajudar mtos outro.... se alguem elaborar soluções melhores, por gentileza compartilhar para todos aprendermos.....
{}'s amigos...
<head>
<script language="JavaScript">
var ervalue=/^[0-9-/]*$/;
var count = 0;
var c1, c2, c3, c4, cb;
function validaNum(field){
c1 = field.value.substring(0,1);
c2 = field.value.substring(1,2);
c3 = field.value.substring(3,4);
c4 = field.value.substring(4,5);
cb = "/";
if(c1=="/")
{field.value=""};
if(c2=="/")
{field.value=c1+""};
if(c3=="/")
{field.value=c1+c2+cb+""};
if(c4=="/")
{field.value=c1+c2+cb+c3+""};
if((field.value.length >= 3)&&(field.value.substring(2,3)!= "/"))field.value=c1+c2+cb+field.value.substring(2,3);
while ((!ervalue.test(field.value)) && (field.value.length > 0)){
field.value=field.value.substring(0, field.value.length - 1);
}
return false;
}
</script>
</head>
<body>
<form>
<input type='text' name='teste' maxlength=5 onkeyup="validaNum(this)";>
</form>
</body>