Allora non dovresti usare onkeyup/onkeydown (che reagiscono quando viene premuto o rilasciato un tasto), ma ti servirebbe onchange, che interviene solo quando l'utente ha finito di scrivere il suo valore.
Codice HTML:
<script type="text/javascript">
function reformat (element)
{
var number = element.value;
number = number.replace ('.', ',');
intpart = number.substring (0, number.indexOf (','));
res = number.substring (number.indexOf (','));
while (int.length () > 3)
{
res = '.' + intpart.substring (intpart.length () - 3) + res;
intpart = intpart.substring (intpart.length () - 3);
}
res = intpart + res;
element.value = res;
}
</script>
[...]
<input type="text" name="..." value="..." onchange="reformat(this)" />
Dovrebbe funzionare... almeno fino a che il tuo utente deciderà di inserire i dati sempre con lo stesso formato.
Stammi bene...