【问题标题】:Take percentage form inputs采用百分比形式输入
【发布时间】:2014-01-11 08:42:36
【问题描述】:

我在 Rails 应用程序中有一个需要百分比的输入字段。所以我需要:

  1. 只有数字(无符号/句点)
  2. 在输入后始终显示“%”的字段

表格:

= form_for @model do |f|
  = f.text_field :price, :maxlength => 3
  = f.submit

实现这一目标的最佳方法是什么?有没有办法可以在 Rails 中解决这个问题,还是应该使用 javascript/jquery?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3 math


    【解决方案1】:

    对于您问题中的第 1 项,您应该使用模型上的验证来处理此问题。应该这样做:

    validates :percentage_field, 
                numericality: { only_integer: true, 
                                greater_than_or_equal_to: 0, 
                                less_than_or_equal_to: 100 }
    

    对于第 2 项,我可能会将 % 符号放在输入框之外。作为提示的一部分或作为输入框右侧的元素。

    如果验证失败,请首先在页面上使用有用的验证消息。如果您想走花哨的预提交 javascript 消息路线,那应该是额外的,而不是本身的解决方案。

    【讨论】:

      【解决方案2】:

      嘿,我用这个插件来解决它。 https://github.com/ruoso/jquery-regex-mask-plugin

      为了实现它我写了

      $('.float').regexMask(/^\d+(,\d+)?$/);
      

      超级简单。

      【讨论】:

        【解决方案3】:

        如果你仍然决定在 JS 端解决你的问题,你可以使用像 parseIntparseFloat 这样的原生函数。他们解析你的字符串值直到the first "invalid" character.

        例如

        parseFloat('10.1%')  -> 10.1
        parseInt('10%')      -> 10
        parseInt('10.1%')    -> 10
        parseFloat('10.1 %') -> 10.1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-26
          • 1970-01-01
          • 2018-04-21
          • 2022-01-22
          • 2018-06-18
          • 1970-01-01
          • 1970-01-01
          • 2018-08-19
          相关资源
          最近更新 更多