Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola, não tenho o costume de utilizar javascript pois costumo realizar trabalhos de backend, mas tenho esse trabalho onde foram me passadas algumas mascaras para eu aplicar nos formularios que são gerados pelo PHP.
eis o seguinte código
function mascara(o,f){
v_obj=o
v_fun=f
setTimeout("execmascara()",1)
}
function execmascara(){
v_obj.value=v_fun(v_obj.value)
}
function leech(v){
v=v.replace(/o/gi,"0")
v=v.replace(/i/gi,"1")
v=v.replace(/z/gi,"2")
v=v.replace(/e/gi,"3")
v=v.replace(/a/gi,"4")
v=v.replace(/s/gi,"5")
v=v.replace(/t/gi,"7")
return v
}
function soNumeros(v){
return v.replace(/\D/g,"")
}
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
}
O código ate tem um texto explicativo, porem em sua aplicação funciona, perfeitamente mas apenas sobre uma condição. o item (input) tem de estar com o nome i(nome) e dentro de um label com for da mesma forma. gostaria que não fosse necessário tal requisito porem meus conhecimentos sobre javascript são bastante limitados e não consigo encontrar onde é feita tal requerimento.
Funciona:
<label for="icpf">
<input type="text" name="icpf" onkeypress="mascara(this,cpf)" />
</label>
Não funciona:
<input type="text" name="cpf" onkeypress="mascara(this,cpf)" />
<input type="text" name="cep" onkeypress="mascara(this,cep)" />>
na verdade, oque ocorre é que o interpretador se confunde, no momento em que a tua function tem o mesmo nome do objeto.
Entendi sim, muito obrigado.
na verdade, oque ocorre é que o interpretador se confunde, no momento em que a tua function tem o mesmo nome do objeto.
te sugiro, deixar assim as funções:
function mcpf(v){
//...
function mcep(v){
//..
entendeu ?