【问题标题】:Placing commas in number fields在数字字段中放置逗号
【发布时间】:2016-01-19 12:38:02
【问题描述】:

我有很多带有数字字段的表格,用于输入相当大的数字。我正在使用一些 javascript 来自动放置逗号来分隔数字,以便在表单中更容易阅读。 问题是,当字段保存到数据库时,文本字段中的逗号使其成为非整数,因此它只保存了它之前的第一组数字(从左到右)遇到逗号。

我的问题是:处理此问题的最佳方法是什么?我想这一定是一个相对常见的情况,虽然我真的找不到简单的答案。

我尝试过添加 before validation 方法来去除逗号,但此时数字已更改。如果我绝望了,我想我可以:

1) 在我的视图中添加一个虚拟字段并隐藏整数字段

2) 抓取并更改控制器中的参数

3) 覆盖提交按钮以在提交前运行逗号压缩脚本。

但所有这些似乎都过分了。有什么更好的做法吗?

提前致谢。

【问题讨论】:

  • 或者在服务器上解析为字符串,去掉那里的逗号。

标签: javascript ruby-on-rails ruby-on-rails-4 rails-activerecord


【解决方案1】:

终于偶然发现了答案。有一个很棒的 jquery 插件,叫做autonumeric,它可以格式化文本框的外观,但不能格式化它的 value 属性。它甚至有一个well maintained rails gem,它非常易于使用并且有据可查。看看吧!

PS,它不能很好地与简单形式的f.input 配合使用。您仍然可以使用简单的表单,但在要格式化的任何字段上,请改用f.text_field

【讨论】:

    【解决方案2】:

    您可能需要将数字作为整数保留在数据库中,但只需用逗号显示即可。请看这个链接How to print a number with commas as thousands separators in JavaScript

    【讨论】:

      【解决方案3】:

      让字段成为字符串字段然后标记.to_i 方法怎么样。

      编辑

      实际上,您需要创建一个方法来处理这些输入字段并将其命名为before_save 或其他名称

      inputname do |i| 
          i.delete!(',').to_i
      end
      

      【讨论】:

      • 不幸的是,似乎一旦到达模型,数字已被修改,因此它没有用。即使是before_validation 也发生得太晚了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多