2011-12-12 22 views

Respuesta

19

Por numericality lado del servidor de validación:

class SomeModel 
    validates :some_column, :numericality => {:only_integer => true} 
end 

y en el lado del cliente, añadir una máscara de entrada a través de JavaScript https://github.com/ruoso/jquery-regex-mask-plugin

$('#some_input').regexMask(/^\d+$/); 
33

Uso number_field_tag, esto generará un campo de número de HTML5

http://apidock.com/rails/ActionView/Helpers/FormTagHelper/number_field_tag

+0

Así es como se ocultan los steppers en los navegadores basados ​​en webkit. http://stackoverflow.com/a/4812443/902968 –

+0

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

1

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 :

+1

Hace 4 años hice esta pregunta y @ La respuesta de clyfe fue lo que necesitaba ... tal vez tu respuesta es útil para las personas que trabajan ahora con rieles y html5 – Angelo

Cuestiones relacionadas