La risposta di @ clyfe è buona, ma quel plugin non funziona con gli elementi HTML5 type=number
. Ecco po 'di codice jQuery veloce che consente solo numeri interi:
$("input[type=number]").keypress(function(event) {
if (!event.charCode) return true;
ch = String.fromCharCode(event.charCode);
return (/[\d]/.test(ch));
});
per consentire decimali o virgole, rendono le espressioni regolari sembrano più quelli del plug-in, ad esempio, https://github.com/ruoso/jquery-regex-mask-plugin/blob/master/regex-mask-plugin.js#L8:
/^((\d{1,3}(\,\d{3})*(((\,\d{0,2}))|((\.\d*)?)))|(\d+(\.\d*)?))$/
(Si noti che diversi locali hanno convenzioni diverse per i decimali e le virgole, quindi è probabilmente più sicuro per consentire solo le cifre :-)
Si noti inoltre che questa è una soluzione per il bug Chrome qui menzionati :
Ecco come si nascondono gli stepper nei browser basati su webkit. http://stackoverflow.com/a/4812443/902968 –
Purtroppo i campi dei numeri HTML5 sono danneggiati in alcuni browser. Se si digita un carattere non numerico, * lo * lo visualizzerà e aggiungendo danno a insulto, imposterà il valore su * blank *, in modo che il JS e/o il server non vedano nemmeno ciò che l'utente ha digitato. Vedere https://code.google.com/p/chromium/issues/detail?id=304455 e https://github.com/angular/angular.js/issues/2144 – AlexChaffee