2014-09-18 20 views
1

我有一個允許輸入軟件版本的HTML表單(例如1.1.1,1.0等)。特別是WordPress軟件版本。目前每個版本都有自己的文本輸入框。當需要很多版本時,HTML表單看起來很亂,需要很長時間才能輸入。在HTML表單中輸入'小於,大於,等於'軟件版本?

我正在尋找一種解決方案,它允許我使用大於(>),小於(<)和等於(=)的邏輯輸入WordPress軟件版本。

例如:

我有這些軟件版本:1.0,1.2,1.3,2.0

  • 用戶輸入: 「< 1.2」 - 的形式將提交: 「1.0」

  • 用戶輸入: 「< = 1.3」 - 的形式將提交: 「1.0,1.2,1.3」

  • 用戶輸入:「> 1.3 「 - 的形式將提交:‘2.0’

HTML5's Range輸入似乎並不足夠,因爲它僅允許值1。

Jquery UI's Range Slider可能是一個合適的選項。

那裏有什麼設計用於這種軟件版本輸入?

我正在使用Rails的後端,如果重要的話。

+0

所以從來沒有在用戶想分的情況下, mit 1.0和1.3但不是1.2? – 2014-09-18 16:38:42

+1

出於好奇,你的版本號碼從哪裏來?我問,因爲版本號非常難以解析。例如,'2.11'是在'2.1'還是'2.10'之後?但是,如果軟件使用[Semver](http://semver.org/),那麼你的狀態會更好,並且有一些[很棒的庫](https://github.com/npm/node -semver)。 – 2014-09-18 16:39:15

+0

數字克里斯 - 很少但可能。 – ethicalhack3r 2014-09-18 16:40:47

回答

1

您可以使用Rubygems版本支持。該將在後端工作,而不是客戶端,但你可以做一個Ajax請求來解析和返回滿意的版本。

首先,創建寶石::版本的數組,你要匹配用戶輸入要求每個版本:

require 'rubygems' 
versions = %w(1.0 1.2 1.3 2.0).map { |s| Gem::Version.new(s) } 
requirement = Gem::Requirement.new("<= 1.3") 

現在,你可以找到符合要求的所有版本:

satisfied_versions = versions.select { |v| req.satisfied_by?(v) } 
# => [#<Gem::Version "1.3">, #<Gem::Version "1.2">, #<Gem::Version "1.0">] 

如果你只想要的版本字符串:

satisfied_versions.map { |v| v.to_s } 
# => ["1.3", "1.2", "1.0"] 
+0

謝謝,這看起來不錯。對於視圖我可以使用這樣的東西 - http://jsfiddle.net/n54srxxt/1/ – ethicalhack3r 2014-09-19 07:32:44

相關問題