2015-09-10 98 views
3

現在我有一個項目,計算startTime,EndTime-breakTime。 並將其顯示到WorkedHours字段中。更改值更改後的Javascript

像這樣: enter image description here

我有一個時間選擇器選擇的時候,但我的計算腳本運行這麼想的後,我改變了值。它在我進入文本框時運行。 所以如果我要改變這樣的: enter image description here

它不會更新Tid Jobbad直到我踏進相同的文本框一次。每當價值變化時,我如何讓它調用函數?

這是腳本:

$(function() { 
    $('#breakTime,#startTime,#endTime') 
     .blur(CalculateTime); 
    CalculateTime(); 
}); 


function CalculateTime() { 
    try { 
     var originalStartTime = $('#startTime').val(), 
      originalEndTime = $('#endTime').val(), 
      originalBreakTime = $('#breakTime').val(); 

     // breaking hours and minutes. needed format: HH:mm 
     var startHours = originalStartTime.substring(0, 2).replace(':', ''), 
      startMinutes = originalStartTime.substring(3, 5), 
      endHours = originalEndTime.substring(0, 2).replace(':', ''), 
      endMinutes = originalEndTime.substring(3, 5); 

     // momentJs variables 
     var mStart = moment().hour(startHours).minute(startMinutes), 
      mEnd = moment().hour(endHours).minute(endMinutes), 
      mBreak = moment.duration(originalBreakTime); 

     var result = mEnd.subtract(mStart).subtract(mBreak).format('HH:mm'); 

     $('#workedHours').val(result); 

    } catch (err) { 
     $('#workedHours').val(err); 
    } 
} 
+1

你能共享一個小提琴? – Araknid

+0

任何關係? http://stackoverflow.com/questions/32498475/javascript-momentjs-wrong-output/32498746#32498746 – Jamiec

+0

如果你想檢查輸入值是否已經改變,你可以使用改變事件 –

回答

1

Y're使用blur事件,當它失去焦點將被髮送到一個元素。所以,如果你想在change重新計算值,你需要綁定的JavaScript事件onChange

$('#breakTime, #startTime, #endTime').change(CalculateTime);