Problema resolvido, utilizando expressão regular:
js:
<script>
function moeda(z){
v = z.value;
v=v.replace(/\D/g,"") //permite digitar apenas números
v=v.replace(/[0-9]{15}/,"inválido") //limita pra máximo 999.999.999,99
v=v.replace(/(\d{1})(\d{13})$/,"$1.$2") //coloca ponto antes dos últimos 13 digitos
v=v.replace(/(\d{1})(\d{10})$/,"$1.$2") //coloca ponto antes dos últimos 10 digitos
v=v.replace(/(\d{1})(\d{7})$/,"$1.$2") //coloca ponto antes dos últimos 7 digitos
v=v.replace(/(\d{1})(\d{1,4})$/,"$1,$2") //coloca virgula antes dos últimos 4 digitos
z.value = v;
}
</script>
html:
<form>Valor R$:<input type="text" name="texto" size="11" style="text-align:right; width: 300px;" onKeyUp="moeda(this);"></form>
Derrepende sirva pra alguém... Abraços!