2012-12-11 97 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?

它添加前导零的数字。

相关问题