Mascara Monetária em JavaScript

4 respostas
C

Alguém que manjar de expressão regular, estou precisando alterar a função abaixo em javascript para prencher um campo de valor com 4 casas decimais, exemplo 3,2345. A função abaixo funciona perfeitamente com duas casas decimais e não estou conseguindo alterar para que preencha automaticamente com 4 casas decimais.

//Chamar essa função na tag imput: onkeyup=“moeda(this);”

function moeda(z){

v = z.value;

v=v.replace(/\D/g,"")  // permite digitar apenas numero

v=v.replace(/(\d{1})(\d{14})$/,"$1.$2")  // coloca ponto antes dos ultimos digitos

v=v.replace(/(\d{1})(\d{11})$/,"$1.$2")  // coloca ponto antes dos ultimos 11 digitos

v=v.replace(/(\d{1})(\d{8})$/,"$1.$2")  // coloca ponto antes dos ultimos 8 digitos

v=v.replace(/(\d{1})(\d{5})$/,"$1.$2")  // coloca ponto antes dos ultimos 5 digitos

v=v.replace(/(\d{1})(\d{1,2})$/,"$1,$2")    // coloca virgula antes dos ultimos 2 digitos

z.value = v;

}

4 Respostas

S

cara não perdi tempo usa a biblioteca jquery money. abraço

J

Veja isso: http://plentz.org/2009/10/29/jquery-maskmoney-plugin/

D

Tenta ai brother

function moeda(z){

v = z.value;

v=v.replace(/\D/g,"") // permite digitar apenas numero

v=v.replace(/(\d{1})(\d{17})$/,"$1.$2") // coloca ponto antes dos ultimos digitos

v=v.replace(/(\d{1})(\d{13})$/,"$1.$2") // coloca ponto antes dos ultimos 13 digitos

v=v.replace(/(\d{1})(\d{10})$/,"$1.$2") // coloca ponto antes dos ultimos 10 digitos

v=v.replace(/(\d{1})(\d{7})$/,"$1.$2") // coloca ponto antes dos ultimos 7 digitos

v=v.replace(/(\d{1})(\d{1,4})$/,"$1,$2") // coloca virgula antes dos ultimos 4 digitos

z.value = v;

}
D

Se quiser… peguei esse .js não lembro onde na net, dei umas melhoradas e se quiser… tem a maioria

// JavaScript Document

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{2})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos

v=v.replace(/(\d{3})(\d{1,3})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos

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: <a href="http://www.diveintopython.org/refactoring/refactoring.html">http://www.diveintopython.org/refactoring/refactoring.html</a>

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 site(v){

//Esse sem comentarios para que você entenda sozinho <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=6" title=":wink:" class="emoji" alt=":wink:">

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

}
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 ponto entre o segundo e o terceiro dígitos

v=v.replace(/.(\d{2})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos

v=v.replace(/(\d{2})(\d)/,"$1/$2")              //Coloca um hífen depois do bloco de quatro dígitos

return v

}
function moeda(v){

v=v.replace(/\D/g,"") // permite digitar apenas numero

v=v.replace(/(\d{1})(\d{17})$/,"$1.$2") // coloca ponto antes dos ultimos digitos

v=v.replace(/(\d{1})(\d{13})$/,"$1.$2") // coloca ponto antes dos ultimos 13 digitos

v=v.replace(/(\d{1})(\d{10})$/,"$1.$2") // coloca ponto antes dos ultimos 10 digitos

v=v.replace(/(\d{1})(\d{7})$/,"$1.$2") // coloca ponto antes dos ultimos 7 digitos

v=v.replace(/(\d{1})(\d{1,4})$/,"$1,$2") // coloca virgula antes dos ultimos 4 digitos

return v;

}

para chamar a função coloque no evento onkeypress do input que ja aparece a mascara ao digitar

onkeypress=“mascara(this,nomedafuncao)”… no seu caso… onkeypress=“mascara(this,moeda)”

Criado 3 de julho de 2010
Ultima resposta 4 de ago. de 2010
Respostas 4
Participantes 4