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

(Resolvido) Ajuda em formatação Moeda no Fire Fox


jgd

Pergunta

Pessoal,

Preciso de ajuda na função abaixo.

Trata-se de formatação moeda no campo conforme for efetuada a digitação.

A função é composta de duas partes. OnKeyPress para incluir valores...

e onKeyDown para retirar valores...

No I.E roda legal... O problema é com relação ao FireFox que no evento onKeyDown

Não apaga e não formata o valor.

Agradeço qualquer ajuda.

Chamada das funções:

R$<input type="text" name="obrigValor" title="Valor" onKeyPress="return(formatarMoeda(this,'.',',',event))" onKeyDown="apaga(this, ',' , '.' , event)" size=10 maxlength=10 value="" style="text-align: right">
Função OnKeyPress - Insere e formata:
function formatarMoeda(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

if (whichCode == 13) return true;  // Enter
key = String.fromCharCode(whichCode);  // recebe o valor da chave vinda da chave do código

if (strCheck.indexOf(key) == -1)
    {return false;}
len = fld.value.length;
//alert(len);
if (len == 14) return false;
for(i = 0; i < len; i++)
    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
    aux = '';
for(; i < len; i++)
    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) fld.value = '';
    if (len == 1) fld.value = '0'+ decSep  + aux;
//    if (len == 2) fld.value = '0'+ decSep + aux;

    if (len > 1) {
        inteiro = aux.slice(0,aux.length -2 )
        parcela = aux.slice(aux.length -2,aux.length )
        aux2 = '';

        for (j = inteiro.length - 1, i = 0; j >= 0; i++, j--) {
            if (i % 3 == 0 && i != 0) {
                aux2 = inteiro.charAt(j) + milSep  + aux2;
            }else
                {aux2 = inteiro.charAt(j) + aux2;}
        }
        fld.value = aux2 + decSep + parcela;
    }

return false;
}

////
Função onKeyDown - Para apagar e re-formatar
function apaga(fld, decSep, milSep , e) {

var strCheck = '0123456789';
var whichCode = (window.Event) ? e.which : event.keyCode;

alert(whichCode);

if(whichCode == 8) {
len = fld.value.length;
for(i = 0; i < len; i++)
    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;

    aux = '';
    for(; i < len - 1; i++)
    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);


    len = aux.length;
    if (len == 0) fld.value = '0';
    if (len == 1) fld.value = '0'+ decSep  + aux;
//    if (len == 2) fld.value = '0'+ decSep + aux;

    if (len > 2) {
        inteiro = aux.slice(0,aux.length -2 )
        parcela = aux.slice(aux.length -2,aux.length )

        aux2 = '';

        for (j = inteiro.length - 1, i = 0; j >= 0; i++, j--) {
            if (i % 3 == 0 && i != 0) {
                aux2 = inteiro.charAt(j) + milSep  + aux2;
            }else
                {aux2 = inteiro.charAt(j) + aux2;}
        }
        fld.value = aux2 + decSep + parcela + '0';
    }
    }
}

//  End -->

Valeu

JGD

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Jonathan...

Deposi de mexer banstante descobri que o problema era que eu estava bloquenado as demais teclas...

Veja linha abaixo (corrigida) em relação a linha do código acima ( formatarMoeda(fld, milSep, decSep, e) ) correspondente

if (whichCode == 13 || whichCode == 8 || whichCode == 0) return true;

Abraço

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...