La respuesta de @clyfe es buena, pero ese complemento no funciona con elementos HTML5 type=number
. Aquí hay un código jQuery rápida que sólo permite a los números enteros:
$("input[type=number]").keypress(function(event) {
if (!event.charCode) return true;
ch = String.fromCharCode(event.charCode);
return (/[\d]/.test(ch));
});
para permitir decimales o comas, hacen que las expresiones regulares se parecen más a las del plugin, por ejemplo, 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*)?))$/
(Tenga en cuenta que diferentes lugares tienen diferentes convenciones para decimales y comas, por lo que es probablemente más seguro para permitir que solo los dígitos :-)
Tenga en cuenta también que esta es una solución para los errores mencionados aquí Chrome :
Así es como se ocultan los steppers en los navegadores basados en webkit. http://stackoverflow.com/a/4812443/902968 –
Lamentablemente, los campos de número HTML5 están rotos en algunos navegadores. Si escribe un carácter no numérico, * lo * mostrará, y si agrega una lesión para insultar, establecerá el valor en * en blanco *, por lo que su JS y/o servidor ni siquiera verá lo que el usuario escribió. Ver https://code.google.com/p/chromium/issues/detail?id=304455 y https://github.com/angular/angular.js/issues/2144 – AlexChaffee