Até onde eu sei o Autor do script é Gabriel Fróes
<script language="javascript"> function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, 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; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ""; if (len == 1) objTextBox.value = "0"+ SeparadorDecimal + "0" + aux; if (len == 2) objTextBox.value = "0"+ SeparadorDecimal + aux; if (len > 2) { aux2 = ""; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ""; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; } </script> <form> Valor R$: <input type="text" name="valor" onKeyPress="return(MascaraMoeda(this,'.',',',event))"> </form>
Veja o exemplo
8 comentários:
O backspace não funciona no firefox por que o codigo de tecla é outro
vc precisa trocar o
if (whichCode == 13) return true;
por
if (whichCode == 08) return true;
mas pra funcionar em ambos, faz
if ((whichCode == 13)||(whichCode == 08)) return true;
Muito boa solução!...simples e eficaz.
Mas não funciona no IE8
aqui funcionou no IEca8
Esse método funciona apenas no asp.net gostaria de saber se precisa fazer alguma modificação para funcionar no JavaScript, para não deixar sujeira no código ASP.
Amigo eu to usando java script para executar o código e não precisa de fazer nenhuma gambiarra para funcionar não apenas deve chamar ele por um evento no caso eu usei o onKeyPress="return(MascaraMoeda(this,'.',',',event))".
Seria muito bom desse um jeito para funcionar no ie também..
melhor post que encontrei sobre máscara monetária! parabéns
Postar um comentário