如何使文本字段仅接受数值?如果我按下字母或符号,则不应填写文本字段,只应允许数字。
有没有铁路方法可以做到这一点?
答案 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错误的解决方法: