У меня есть поле ввода в приложении rails, где я хочу процент. Поэтому мне нужно:
Форма:
= form_for @model do |f|
= f.text_field :price, :maxlength => 3
= f.submit
Каков наилучший способ снять это? Есть ли способ, который я могу сделать это в рельсах или использовать javascript/jquery?
Эй, я использовал этот плагин для его решения. https://github.com/ruoso/jquery-regex-mask-plugin
Чтобы реализовать это, я написал
$('.float').regexMask(/^\d+(,\d+)?$/);
супер простой.
Для пункта 1 в вашем вопросе вы должны использовать это, используя проверки на своей модели. Это должно сделать следующее:
validates :percentage_field,
numericality: { only_integer: true,
greater_than_or_equal_to: 0,
less_than_or_equal_to: 100 }
Для пункта 2 я, вероятно, поместил бы знак% вне поля ввода. Либо как часть приглашения, либо как элемент справа от поля ввода.
Получите эту работу сначала с полезными сообщениями проверки на странице, если проверка не удалась. Если вы хотите спуститься с фантастическим маршрутом сообщений javascript, который должен быть добавлен поверх этого, а не из своего решения.
Если вы все еще решили решить свою проблему на стороне JS, вы можете использовать собственные функции, такие как parseInt
и parseFloat
. Они анализируют ваши строковые значения до первого "недопустимого" символа.
Например
parseFloat('10.1%') -> 10.1
parseInt('10%') -> 10
parseInt('10.1%') -> 10
parseFloat('10.1 %') -> 10.1