2011-05-16 30 views
1

所以我將時間存儲爲'01:30:00'。我有開始時間和日期時間下拉菜單。我希望將下拉列表設置爲開始時間+ 1小時。有沒有辦法通過JavaScript或jQuery添加時間?有沒有辦法增加使用JavaScript的時間?

這裏是我當前的代碼:

$(".start_time").change(function(){ 
     $(".end_time").val($(this).val()); 
}); 
+0

這兩個下拉菜單在相同的順序中有相同的選項?他們都是小時候嗎? – 2011-05-16 04:50:15

+0

他們都有相同順序的選項。他們是半小時。所以它的凌晨1點,凌晨1點30分等 – raeq 2011-05-16 04:51:35

回答

3

試試這個:

  • 發現的開始時間選定的指數
  • 2碰到它找到你的結束時間索引(假設你有半個小時的增量)
  • 使用mod運算符%返回索引0或1(分別爲00:00和00:30)
$(".start_time").change(function(){ 
     var sel =$(this).attr('selectedIndex'); 
     var endIdx = (sel + 2) % 48; // 47 is 23:30, so 48 should go back to index 0 
     $(".end_time").attr('selectedIndex', endIdx);   
}); 

Try it out on JSBin

+0

很聰明(+1),但不要忘記按選擇選項的數量進行修改,這樣如果他們選擇最後一個或倒數第二個選項,它會繞回來。 – Domenic 2011-05-16 05:03:28

+0

@Dom:謝謝;我忘記了這一點;感謝您的建議! – 2011-05-16 05:09:51

+1

我可以建議,而不是if和minus,只是'endIdx =(sel + 2)%47'? – Domenic 2011-05-16 05:34:43

0

基本例子......

var date = new Date(); 
var h = date.getHours() + 1; 
var m = date.getMinutes(); 
var s = date.getSeconds(); 
alert('One hour from now: ' + h + ':' + m + ':' + s); 

演示:http://jsfiddle.net/fBaDM/2/

0

後您分析您的日期/時間字符串,可以使用諸如.setHours在您的日期對象(更多信息在Mozilla Developer Center)。

我強烈建議使用來處理日期和時間。我相信它對你來說非常方便。

protip:儘量避免用「jQuery標記」替換JavaScript;畢竟,這全是JS。 :)

1

這裏有兩個單獨的問題:第一個是從您的.start_time輸入中解析出時間,第二個是將它遞增到一個小時後。

第一個實際上是一個字符串操作練習。一旦你分析出了字符串的片段,例如通過正則表達式,你可以將它們變成一個Date實例並使用setHours,或者你可以將組件作爲數字操縱,然後按照你想要的格式將它們重新組合成一個字符串。

這方面的一個例子可能是如下:

var TIME_PARSING_REGEX = /([0-9]{2}):([0-9]{2}):([0-9]{2})/; 

function padToTwoDigits(number) { 
    return (number < 10 ? "0" : "") + number; 
} 

$(".start_time").change(function() { 
    var stringTime = $(this).val(); 
    var regexResults = TIME_PARSING_REGEX.exec(stringTime); 

    var hours = parseInt(regexResults[1], 10); 
    var newHours = (hours + 1) % 24; 

    var newHoursString = padToTwoDigits(newHours); 
    var minutesString = regexResults[2]; 
    var secondsString = regexResults[3]; 

    var newTimeString = newHoursString + ":" + minutesString + ":" + secondsString; 
    $(".end_time").val(newTimeString); 
}); 
相關問題