Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nandel

[Resolvido] Aplicação de codigo

Recommended Posts

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)" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.