Ir para conteúdo

POWERED BY:

Arquivado

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

anneviana

[Resolvido] Formatar moeda no onblur

Recommended Posts

Olá pessoal, estou com uma dificuldade em fazer uma mascara monetária em js

 

queria saber como eu faço para colocar uma máscara numérica no onblur, por exemplo se digitei 90 no onblur ele formate 90,00 e também se digitar ,90 ele me retorne 0,90...

 

se alguém puder me ajudar eu agradeço muito...obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum.. você pode usar expressões regulares para tal.

 

identifica o padrão digitado no campo, e aplica a formatação como você quer.

Como você tentou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, tentei com uma máscara normal que acrescenta a formatação conforme digita o valor, mas dessa forma que preciso ainda não consegui, estava tentando com jquery,mas não deu certo também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me diz quais são todas as regras. Todos os tipos de entradas e saídas esperadas.

 

Dai então conseguiremos montar um algoritmo.

 

 

90 = 90,00

,90 = 0,90

 

que mais ? tem mais alguma "regra" ? ou caso de uso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então,acho que na verdade,os outros casos vão ser parecidos com o segundo caso de "90,00"

só que seria na sequência como 900,00 , 9.000,00...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.. fiz uma funçãozinha rápida aqui.

 

<script type="text/javascript">
function id(el){
   return document.getElementById(el);
}
String.prototype.formatMoney = function(){
   return this.replace(/([0-9]{1,3})$/g,"$1,00");
};
window.onload = function(){
   id('moeda').onblur = function(){
       var v = this.value;
       if( v.indexOf(',')===0 ){
           v = v.replace(',','');
           if(v.length===1) v = '0,' + v + '0';
           else v = '0,' + v;
       } else {
           v = v.formatMoney();
       }
       this.value = v;
   }
};
</script>
<input type="text" name="moeda" id="moeda" />

 

 

 

,1 = 0,10

,10 = 0,10

1 = 1,00

10 = 10,00

100 = 100,00

 

Parei até ai. Agora precisaria implementar a ER para formatar os milhares e mais casas depois disso. :lol:

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.