Взять проценты от ввода данных

0

У меня есть поле ввода в приложении rails, где я хочу процент. Поэтому мне нужно:

  1. Только числа (без символов/периодов)
  2. Поле всегда должно иметь "%", видимое после ввода

Форма:

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

Каков наилучший способ снять это? Есть ли способ, который я могу сделать это в рельсах или использовать javascript/jquery?

Теги:
math
ruby-on-rails-3

3 ответа

0
Лучший ответ

Эй, я использовал этот плагин для его решения. https://github.com/ruoso/jquery-regex-mask-plugin

Чтобы реализовать это, я написал

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

супер простой.

1

Для пункта 1 в вашем вопросе вы должны использовать это, используя проверки на своей модели. Это должно сделать следующее:

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

Для пункта 2 я, вероятно, поместил бы знак% вне поля ввода. Либо как часть приглашения, либо как элемент справа от поля ввода.

Получите эту работу сначала с полезными сообщениями проверки на странице, если проверка не удалась. Если вы хотите спуститься с фантастическим маршрутом сообщений javascript, который должен быть добавлен поверх этого, а не из своего решения.

0

Если вы все еще решили решить свою проблему на стороне JS, вы можете использовать собственные функции, такие как parseInt и parseFloat. Они анализируют ваши строковые значения до первого "недопустимого" символа.

Например

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню