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

时间:2011-12-12 21:29:20

标签: ruby-on-rails-3 validation form-helpers

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

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

3 个答案:

答案 0 :(得分:34)

使用number_field_tag,这将生成HTML5号码字段

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

答案 1 :(得分:19)

在服务器端验证数值:

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

在客户端,通过javascript https://github.com/ruoso/jquery-regex-mask-plugin

添加输入掩码
$('#some_input').regexMask(/^\d+$/);

答案 2 :(得分:1)

@ 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));
  });

允许使用小数或逗号,使正则表达式看起来更像插件中的正则表达式,例如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*)?))$/

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

另请注意,这是针对此处提到的Chrome错误的解决方法: