2015-09-10 56 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);