2012-12-11 27 views
2

有沒有一種方法來生成類似下面的標記:生成一個小時:分鐘選擇列表

<select> 
    <option value="0000">00:00</option> 
    <option value="0030">00:30</option> 
    <option value="0100">01:00</option> 
    <option value="0130">01:30</option> 
    <option value="0200">02:00</option> 
    <option value="0230">02:30</option> 
    <option value="0300">03:00</option> 
    <!--rest of options omitted for brevity--> 
</select> 

...一路攀升至23:30 - 所以每30分鐘重複?

我使用的是軌道3,雖然這個工作,它不包括分鐘(在我的情況,每半小時一班)

select_hour(13, :prompt => 'Choose hour') 
+0

你需要在服務器端(這會更有意義),在Ruby中,還是在JavaScript中的客戶端會好嗎? –

+0

無論 - 提供的JS答案看起來不錯,只是想知道是否有一個我可以使用的單線軌道幫手(它似乎不是) – Alex

回答

3

您可以使用一個簡單的for循環產生的呢在JavaScript(或PHP/Ruby,如果你願意,基本結構是相同的)。

如:

var selection = ""; 
var i = 0; 
for(var i = 0; i < 24; i++) 
{ 
    selection += "<option value='"+ zeroFill(i, 2) +"00'>"+ zeroFill(i, 2) + ":00" + "</option>"; 
     selection += "<option value='"+ zeroFill(i, 2) +"30'>"+ zeroFill(i, 2) + ":30" + "</option>"; 
} 
$("select").html(selection); 

function zeroFill(number, width) 
{ 
    width -= number.toString().length; 
    if (width > 0) 
    { 
    return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number; 
    } 
    return number + ""; // always return a string 
} 

下面是一個例子:http://jsfiddle.net/MrXenotype/chafg/

的ZEROFILL功能就是從這裏取:How can I pad a value with leading zeros?

它添加前導零的數字。

相關問題