estou fazendo um validador de campos de form, utilizando java script: expressões regulares, que só permite entradas de dados corretos para cada tipo de campo (sem mostrar janela de erro), meus conhecimentos de Javascript são limitados e estou com dificuldades em alguns campos, mais especificamente no campo de dados de hora, nele justamente horas invalidas estão sendo aceitas e as corretas são apagadas. alquem poderia dar uma olhadinha no código abaixo?
Agradeço antecipadamente.
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script>
function mascara(o,f){
v_obj=o
v_fun=f
setTimeout("execmascara()",1)
}
function execmascara(){
v_obj.value=v_fun(v_obj.value)
}
function soLetras(v){
return v.replace(/\d/g,"") //Remove tudo o que não é Letra
}
function soLetrasMA(v){
v=v.toUpperCase() //Maiúsculas
return v.replace(/\d/g,"") //Remove tudo o que não é Letra ->maiusculas
}
function soLetrasMI(v){
v=v.toLowerCase() //Minusculas
return v.replace(/\d/g,"") //Remove tudo o que não é Letra ->minusculas
}
function soNumeros(v){
return v.replace(/\D/g,"") //Remove tudo o que não é dígito
}
function telefone(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca hífen entre o quarto e o quinto dígitos
return v
}
function cpf(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/(\d{3})(\d)/,"$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos
v=v.replace(/(\d{3})(\d)/,"$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos
//de novo (para o segundo bloco de números)
v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
return v
}
function cep(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
return v
}
function cnpj(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d{2})(\d)/,"$1.$2") //Coloca ponto entre o segundo e o terceiro dígitos
v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
v=v.replace(/\.(\d{3})(\d)/,".$1/$2") //Coloca uma barra entre o oitavo e o nono dígitos
v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca um hífen depois do bloco de quatro dígitos
return v
}
function romanos(v){
v=v.toUpperCase() //Maiúsculas
v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
//Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
v=v.replace(/.$/,"")
return v
}
function data(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/(\d{2})(\d)/,"$1-$2") //Coloca um ponto entre o segundo e o terceiro dígitos
v=v.replace(/(\d{2})(\d)/,"$1-$2") //Coloca um ponto entre o quarto e o quinto dígitos
//v=v.replace(/^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/)
v=v.replace(/^((0[1-9]|[12]\d)\-(0[1-9]|1[0-2])|30\-(0[13-9]|1[0-2])|31\-(0[13578]|1[02]))\-\d{4}$/)
//v=v.replace(/^(0[1-9]|[012][0-9]|3[01])/\-(0[1-9]|1[012])/\-([12][0-9]{3})/,"")
return v
}
function hora(v){
//v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/(\d{2})(\d)/,"$1:$2") //Coloca dois ponto entre o segundo e o terceiro dígitos
v=v.replace( (/[012][0-9]:[0-5][0-9]/), "")
//if v.teste( (/[012][0-9]:[0-5][0-9]/);"certo";"errado")
return v
}
function site(v){
//Esse sem comentarios para que você entenda sozinho;-)
v=v.replace(/^http:\/\/?/,"")
dominio=v
caminho=""
if(v.indexOf("/")>-1)
dominio=v.split("/")[0]
caminho=v.replace(/[^\/]*/,"")
dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
caminho=caminho.replace(/([\?&])=/,"$1")
if(caminho!="")dominio=dominio.replace(/\.+$/,"")
v="http://"+dominio+caminho
return v
}
</script>
</head>
<body>
<p><font size="5"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Validador de campos de formularios</font></strong></font></p>
<table width="54%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%"><div align="left">Letras: </div></td>
<td width="67%"><input name="letras" type="text" id="letras" onkeypress="mascara(this,soLetras)"></td>
</tr>
<tr>
<td><div align="left">Letras Maiusculas: </div>
</td>
<td><input name="letrasMA" type="text" id="letrasMA" onkeypress="mascara(this,soLetrasMA)" >
</td>
</tr>
<tr>
<td><div align="left">Letras Minusculas: </div>
</td>
<td><input name="letrasMI" type="text" id="letrasMI" onkeypress="mascara(this,soLetrasMI)" >
</td>
</tr>
<tr>
<td><div align="left">Números: </div></td>
<td><input name="numeros" type="text" id="numeros" onkeypress="mascara(this,soNumeros)" ></td>
</tr>
<tr>
<td><div align="left">Telefone: </div></td>
<td><input name="tel" id="tel" onkeypress="mascara(this,telefone)" maxlength="14" ></td>
</tr>
<tr>
<td><div align="left">Cpf: </div></td>
<td><input name="cpf" id="cpf" onkeypress="mascara(this,cpf)" maxlength="14" >
ainda não testa digito</td>
</tr>
<tr>
<td height="24"><div align="left">Cep: </div></td>
<td><input name="cep" id="cep" onkeypress="mascara(this,cep)" maxlength="9" ></td>
</tr>
<tr>
<td><div align="left">Cnpj: </div></td>
<td><input name="cnpj" id="cnpj" onkeypress="mascara(this,cnpj)" maxlength="18" >
ainda não testa digito</td>
</tr>
<tr>
<td><div align="left">Romanos: </div></td>
<td><input name="romanos" id="romanos" onkeypress="mascara(this,romanos)" maxlength="18" ></td>
</tr>
<tr>
<td><div align="left">Data: </div>
</td>
<td><input name="data" id="data2" onkeypress="mascara(this,data)" maxlength="10" />
só formatação ainda</td>
</tr>
<tr>
<td><div align="left">Hora: </div>
</td>
<td><input name="hora" id="hora" onkeypress="mascara(this,hora)" maxlength="5" >
aqui esta o problema
</td>
</tr>
</table>
</body>
</html>
Pergunta
Faros
estou fazendo um validador de campos de form, utilizando java script: expressões regulares, que só permite entradas de dados corretos para cada tipo de campo (sem mostrar janela de erro), meus conhecimentos de Javascript são limitados e estou com dificuldades em alguns campos, mais especificamente no campo de dados de hora, nele justamente horas invalidas estão sendo aceitas e as corretas são apagadas. alquem poderia dar uma olhadinha no código abaixo?
Agradeço antecipadamente.
Link para o comentário
Compartilhar em outros sites
5 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.