Ruby on rails 3 Rails 3-使文本字段仅接受数值

Ruby on rails 3 Rails 3-使文本字段仅接受数值,ruby-on-rails-3,validation,form-helpers,Ruby On Rails 3,Validation,Form Helpers,如何使文本字段仅接受数值?如果我按下字母或符号,文本字段不应填充,它应只允许数字 有没有rails方法可以做到这一点?在服务器端验证数值性: class SomeModel validates :some_column, :numericality => {:only_integer => true} end 在客户端,通过javascript添加一个输入掩码 使用number\u field\u标签,这将生成一个HTML5数字字段 @clyfe的答案是好的,但该插件不适用于H

如何使文本字段仅接受数值?如果我按下字母或符号,文本字段不应填充,它应只允许数字


有没有rails方法可以做到这一点?

在服务器端验证数值性:

class SomeModel
  validates :some_column, :numericality => {:only_integer => true}
end
在客户端,通过javascript添加一个输入掩码


使用
number\u field\u标签
,这将生成一个HTML5数字字段


@clyfe的答案是好的,但该插件不适用于HTML5
type=number
元素。下面是一些只允许整数的快速jQuery代码:

  $("input[type=number]").keypress(function(event) {
      if (!event.charCode) return true;          
      ch = String.fromCharCode(event.charCode);
      return (/[\d]/.test(ch));
  });
要允许小数或逗号,请使正则表达式看起来更像插件中的正则表达式,例如:

(请注意,不同的地区对小数和逗号有不同的约定,因此只允许数字可能更安全:-)

另外请注意,这是一个解决此处提到的Chrome bug的方法:


以下是如何在基于webkit的浏览器中隐藏步进器。不幸的是,HTML5数字字段在某些浏览器中被破坏。如果您键入一个非数字字符,它将显示该字符,并将伤害添加到侮辱中,它会将该值设置为空,因此您的JS和/或服务器甚至看不到用户键入的内容。4年前我问了这个问题,@clyfe的答案就是我需要的。。。也许你的答案对现在使用rails和html5的人有用
  $("input[type=number]").keypress(function(event) {
      if (!event.charCode) return true;          
      ch = String.fromCharCode(event.charCode);
      return (/[\d]/.test(ch));
  });
/^((\d{1,3}(\,\d{3})*(((\,\d{0,2}))|((\.\d*)?)))|(\d+(\.\d*)?))$/