Jump to content


Photo

[Resolvido] Mascara Para EndereçO Mac


  • Faça o login para participar
2 replies to this topic

#1 leandro-ljs

leandro-ljs

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Itajubá

Posted 11/08/2010, 17:00

Olá Pessoal, Após uma eternidade por problemas particulares estou voltando a trabalhar na web novamente e já me deparei com um problema e queria pedir uma ajuda a todos.
Seguinte, estou precisando montar uma mascara java para um campo a ser preenchido com um endereço mac.

Tenho isso:

<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 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 MAC(v){ 
v=v.toUpperCase() //Maiúsculas 
v=v.replace(/[^ABCDEFG0123456789]/g,"") //Remove tudo o que não for A, B, C, D, E, F, G ou Numeros
v=v.replace(/(\d{1})(\d{12})$/,"$1:$2") // coloca : antes dos ultimos 12 digitos 
v=v.replace(/(\d{1})(\d{10})$/,"$1:$2") // coloca : antes dos ultimos 10 digitos 
v=v.replace(/(\d{1})(\d{8})$/,"$1:$2") // coloca : antes dos ultimos 8 digitos 
v=v.replace(/(\d{1})(\d{6})$/,"$1:$2") // coloca : antes dos ultimos 6 digitos 
v=v.replace(/(\d{1})(\d{4})$/,"$1:$2") // coloca : antes dos ultimos 4 digitos 
v=v.replace(/(\(A|B|C{1})(\d{2})$/,"$1:$2") // coloca : antes dos ultimos 2 digitos 
return v; 
}
</script>

no form estou usando assim onkeypress="mascara(this,MAC)"

ele sai formatado correto, porem nao formata quando digito os caracteres ABCDEFG, só formata se digito numeros

Alguém sabe o que estou mancando ??

Obrigado a todos
[SIZE=7]A realidade do maluco é o sonho do careta!!!

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 11/08/2010, 17:19

O problema foi ter usado \d, já que as letras podem aparecer em qualquer lugar. Use \w, que pega os dois. Outro problema foi desconsiderar da segunda expressão pra frente que o valor já está parcialmente formatado. Veja se assim funciona:

v = v.replace(/^(\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
Não sei agora se o : precisa ser escapado. Qualquer coisa coloca uma barra antes dele.

Edição feita por: LeoB, 11/08/2010, 17:20.


#3 leandro-ljs

leandro-ljs

    Turista

  • Usuários
  • 50 posts
  • Sexo:Masculino
  • Localidade:Itajubá

Posted 17/08/2010, 10:06

Muito Obrigado Cara

Com base no que vc me passou eu fiz assim e funcionou perfeito

v = v.replace(/(\w\w{1})(\w{12})$/, "$1:$2");
v = v.replace(/(\w\w{1})(\w{10})$/, "$1:$2");
v = v.replace(/(\w\w{1})(\w{8})$/, "$1:$2");
v = v.replace(/(\w\w{1})(\w{6})$/, "$1:$2");
v = v.replace(/(\w\w{1})(\w{4})$/, "$1:$2");
v = v.replace(/(\w\w{1})(\w{2})$/, "$1:$2");

Muito Obrigado pela ajuda.

Fique com Deus.

O problema foi ter usado \d, já que as letras podem aparecer em qualquer lugar. Use \w, que pega os dois. Outro problema foi desconsiderar da segunda expressão pra frente que o valor já está parcialmente formatado. Veja se assim funciona:

v = v.replace(/^(\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
v = v.replace(/<img src='http://forum.wmonline.com.br/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />\w\w)(\w)/, "$1:$2");
Não sei agora se o : precisa ser escapado. Qualquer coisa coloca uma barra antes dele.


[SIZE=7]A realidade do maluco é o sonho do careta!!!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq