Rails 3 - 使文本字段仅接受数字值
如何使文本字段只接受数字值?如果我按字母或符号,则不应填充文本字段,而应只允许数字。
有没有一种轨道方法可以做到这一点?
How do I make a text field accept only numeric values? If I press a letter or a symbol, the text field should not be filled, it should only allow numbers.
Is there a rails way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
number_field_tag
,这将生成一个 HTML5 数字字段http:// apidock.com/rails/ActionView/Helpers/FormTagHelper/number_field_tag
Use
number_field_tag
, this will generate a HTML5 number fieldhttp://apidock.com/rails/ActionView/Helpers/FormTagHelper/number_field_tag
在服务器端验证数字:
在客户端,通过 javascript 添加输入掩码 https: //github.com/ruoso/jquery-regex-mask-plugin
On the server side validate numericality:
and on the client side, add an input mask via javascript https://github.com/ruoso/jquery-regex-mask-plugin
@clyfe 的答案很好,但该插件不适用于 HTML5
type=number
元素。这里有一些只允许整数的快速 jQuery 代码:要允许小数或逗号,使正则表达式看起来更像插件中的那些,例如 https://github.com/ruoso/jquery-regex-mask-plugin/blob/master/regex-mask-plugin.js#L8 :(
请注意,不同的语言环境有不同的约定对于小数和逗号,因此只允许使用数字可能更安全 :-)
另请注意,这是针对此处提到的 Chrome 错误的解决方法:
@clyfe's answer is good, but that plugin doesn't work with HTML5
type=number
elements. Here's some quick jQuery code that only allows integers:to allow decimals or commas, make the regex look more like those in the plugin, e.g. https://github.com/ruoso/jquery-regex-mask-plugin/blob/master/regex-mask-plugin.js#L8 :
(Note that different locales have different conventions for decimals and commas, so it's probably safer to just allow digits :-)
Note also that this is a workaround for the Chrome bugs mentioned here: