jgd Postado Outubro 23, 2009 Denunciar Share Postado Outubro 23, 2009 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 -->ValeuJGD Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 23, 2009 Denunciar Share Postado Outubro 23, 2009 Não analisei o código ainda, mas ocorre algum erro ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jgd Postado Outubro 24, 2009 Autor Denunciar Share Postado Outubro 24, 2009 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) ) correspondenteif (whichCode == 13 || whichCode == 8 || whichCode == 0) return true;Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 24, 2009 Denunciar Share Postado Outubro 24, 2009 Ok então !O tópico foi marcado como Resolvido Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jgd
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:
Função OnKeyPress - Insere e formata: Função onKeyDown - Para apagar e re-formatarValeu
JGD
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.