我有一個輸入字段在我想要百分比的Rails應用程序中。所以,我需要:以百分比形式輸入
- 只有數字(無符號/週期)
- 領域總是有 '%' 可見輸入
表格後:
= form_for @model do |f|
= f.text_field :price, :maxlength => 3
= f.submit
什麼是最好的方法來解決這個問題?有沒有一種方法,我可以在軌道中取消或應該使用JavaScript/jQuery?
我有一個輸入字段在我想要百分比的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
。他們分析您的字符串值直到the first "invalid" character.
E.g.
parseFloat('10.1%') -> 10.1
parseInt('10%') -> 10
parseInt('10.1%') -> 10
parseFloat('10.1 %') -> 10.1