Mira si te sirve esta funcion que yo uso (la modifiqué de una que encontré por ahí)
Código Javascript
:
Ver originalfunction number_format(num,formato) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
if(formato=="moneda")
return (((sign)?'':'-') + '$' + num + '.' + cents);
if(formato=="decimal")
return (((sign)?'':'-') + num + '.' + cents);
if(formato=="entero")
return (((sign)?'':'-') + num );
else
return (((sign)?'':'-') + '$' + num + '.' + cents);
}
Su uso es muy sencillo:
<input type="text" name="mivalor" onchange="this.value=number_format(this.value,'dec imal');">
Así si el usuario no pone decimales la funcion los asigna en automático, y ya sólo necesitas comprobar que no exceda el valor que tu quieras.