2015-01-03 175 views
0

我試圖計算兩個表單域之間的時差&,但我得到「無效日期」返回。我試圖使用其他例子,並使它們適合我的需求。輸入用於開始和結束字段。moment.js「無效日期」計算時間差

<script type="text/javascript" src="/js/moment.js"></script> 
<script type="text/javascript"> 
    function calculate(){ 
          var start = document.getElementById(StartTime); 
          var end = document.getElementById(EndTime); 
          var diff = moment.utc(moment(end,"HH:mm").diff(moment(start,"HH:mm"))).format("HH:mm") 
          document.form.total.value = diff; 
        } 
</script> 
<form method="POST" name="form" id="form" action="test2.php"> 
<?php 
echo "time1: <input type='text' name='StartTime' id='StartTime' onChange='calculate()'/> <br />"; 
echo "time2: <input type='text' name='EndTime' id='EndTime' onChange='calculate()' /> <br />"; 
echo "difference: <input type='text' name='total' id='total' /> <br /> "; 
echo "<Br />"; 
?> 
</form> 

感謝

+1

'getElementById'接受一個字符串,所以它應該是'var start = document.getElementById(「StartTime」);'等等......見https://developer.mozilla.org/en-US/docs/ Web/API/document.getElementById – nha

+0

感謝@nha,這是固定的「無效日期」的問題,現在我需要移動到下一期的差異顯示「00:00」 – Brett

+0

什麼是你的每個日期的輸入呢?和你見過這個答案http://stackoverflow.com/questions/12593653/moment-js-diff-incorrect? – nha

回答

0

請看看下面的代碼:

<html> 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script> 

<script type="text/javascript"> 
    function calculate(){ 
     var start = document.getElementById("startTime").value; 
     var end = document.getElementById("endTime").value; 
     var formatStr = "HH:mm"; 
     var diff = moment.utc(moment(end, formatStr).diff(moment(start, formatStr))); 
     document.getElementById("total").innerHTML = diff.format(formatStr); 
    } 
</script> 

<input type='text' id='startTime' onChange='calculate()'/> 
<input type='text' id='endTime' onChange='calculate()' /> 
<div id='total' /> 
</html> 

我刪除了PHP代碼,因爲它是不調試這個有用的,這個問題是不相關的。 請注意,您需要使用.value來獲取輸入值。

+0

非常感謝!非常感謝。 – Brett