Ir para conteúdo
Fórum Script Brasil
  • 0

Máscara para valores


Levi_gns

Pergunta

Bom dia a todos!

Tenho um script de máscara para valores que para ficar 100% precisa de mais um detalhezinho. É o seguinte:

Vamos supor que o valor que eu desejo dar é 2000. Ao digitar esse valor, com a máscara ele aparece R$ 2.000,00.

Porém, se eu digitar por engano 20000 e quiser retirar o ultimo '0' para que fique o valor que eu desejo, com a máscara esse valor aparecerá R$ 20.000,0.

Como eu poderia fazer com que a máscara, ao apagar dígitos, retocedesse as vírgulas e pontos?

<script>
function maskIt(w,e,m,r,a){
    
    // Cancela se o evento for Backspace
    if (!e) var e = window.event
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    
    // Variáveis da função
    var txt  = (!r) ? w.value.replace(/[^\d]+/gi,'') : w.value.replace(/[^\d]+/gi,'').reverse();
    var mask = (!r) ? m : m.reverse();
    var pre  = (a ) ? a.pre : "";
    var pos  = (a ) ? a.pos : "";
    var ret  = "";

    if(code == 9 || code == 8 || txt.length == mask.replace(/[^#]+/g,'').length) return false;

    // Loop na máscara para aplicar os caracteres
    for(var x=0,y=0, z=mask.length;x<z && y<txt.length;){
        if(mask.charAt(x)!='#'){
            ret += mask.charAt(x); x++;
        } else{
            ret += txt.charAt(y); y++; x++;
        }
    }
    
    // Retorno da função
    ret = (!r) ? ret : ret.reverse()    
    w.value = pre+ret+pos;
}

// Novo método para o objeto 'String'
String.prototype.reverse = function(){
    return this.split('').reverse().join('');
};
</script>

<html>
<input name="valor" type="text" id="valor" maxlength="17" onkeyup="maskIt(this,event,'###.###,##',true,{pre:'R$ ',pos:''})" />
</html>

Editado por fercosmig
add tag's :: fercosmig
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Cara, eu não testei aki, mas acho que tu deveria fazer a funcao ser ativada pelo evento onkeypress e a cada vez que o usuario aperta um botao, você usa expressao regular pra substituir R, $, . e , por uma string vazia. Depois tu passa essa sua funcao para mascarar o campo denovo.

Tenta isso e depois mostra pra gente no que deu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...