14

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

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

4

3 回答 3

36

使用number_field_tag,这将生成一个 HTML5 数字字段

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

于 2011-12-12T22:25:12.680 回答
21

在服务器端验证数字:

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

在客户端,通过 javascript 添加输入掩码https://github.com/ruoso/jquery-regex-mask-plugin

$('#some_input').regexMask(/^\d+$/);
于 2011-12-12T21:35:30.823 回答
1

@clyfe 的回答很好,但该插件不适用于 HTML5type=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 错误的解决方法:

于 2015-06-02T18:29:14.927 回答