Stavo pensando che se è un controllo su un campo di testo quello che ti occorre, potresti provare con qualcosa del genere…
codice:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Esempio</title>
<script type="text/javascript">
function numbersOnly(oMyField1, oKeyEvent) {
var nChar = (oKeyEvent || window.event || { charCode: 0 }).charCode, sChar = String.fromCharCode(nChar), rSeparator = /,/;
return nChar === 0 || /\d/.test(sChar) || (rSeparator.test(sChar) && !rSeparator.test(oMyField1.value));
}
function formatNumber(oMyField2) {
var aFragms = parseFloat(oMyField2.value.replace(/\./g, "").replace(",",".")).toFixed(2).split(".");
oMyField2.value = aFragms[0].replace(/(\d{3})+$/g, ".$&").replace(/^\./, "").replace(/\d{3}(?!$)/g, "$&.") + "," + aFragms[1];
}
function unformatNumber(oMyField3) {
oMyField3.value = oMyField3.value.replace(/\.|,00/g, "");
}
</script>
</head>
<body>
<form name="myForm">
Inserire prezzo: <input type="text" name="prezzo" value="5.000" onblur="formatNumber(this);" onfocus="unformatNumber(this);" onkeypress="return numbersOnly(this, event)"; onpaste="return false;" /></p>
</form>
</body>
</html>
Il codice evidenziato in verde sembrerebbe superfluo, ma si rende necessario per evitare errori nel caso in cui l'utente clicchi col tasto destro sul campo e selezioni la voce «Annulla».