我有一个包含两个输入类型=“时间”字段的表单。我在表单上有第三个输入type =“time”字段,称为'delay',我想根据两次之间的差异使用jQuery进行更新。
我已经找到了答案,但到目前为止还没有找到一个有效的解决方案。由于输入类型=“时间”字段只包含小时/分钟,我尝试过这样的事情:
<input type="time" id="timeOfCall">
<input type="time" id="timeOfResponse">
var timeOfCall = $('#timeOfCall').val();
var timeOfResponse = $('#timeOfResponse').val();
var diff = new Date("Aug 08 2012" + timeOfCall) - new Date("Aug 08 2012" + timeOfResponse);
var timeDifference = diff/(60*60*1000);
然而,这不起作用。我使用它时得到NaN回复。我从another Stackoverflow question得到了这个代码,那个问过那个问题的人也遇到了同样的NaN问题,但没有发布它的问题,没有帮助找到问题的解决方案。
我也试过这个:
var timeDifference = new Date("1970-1-1 " + timeOfCall) - new Date("1970-1-1 " + timeOfResponse) ) / 1000 / 60 / 60;
这绝对是最接近工作的,但它有时会产生一些奇怪的结果。例如,如果timeOfCall是01:01而timeOfResponse是03:03则它给出的差异是2.033333 ......
在任何一种情况下,我都无法在任何一种情况下获得更新的“延迟”时间字段。
$('#delay').val(timeDifference);
什么都不做。我真的很感激任何和所有这方面的帮助,我过去几天一直在努力,没有成功,也没有真正的线索如何解决它。我一直在做很多谷歌搜索,但很少有结果似乎与HTML5输入类型=“时间”字段有关,所以到目前为止我没有运气。
修改: jsFiddle
答案 0 :(得分:2)
可能就是这样:
$('button').on('click', function () {
var timeOfCall = $('#timeOfCall').val(),
timeOfResponse = $('#timeOfResponse').val(),
hours = timeOfResponse.split(':')[0] - timeOfCall.split(':')[0],
minutes = timeOfResponse.split(':')[1] - timeOfCall.split(':')[1];
minutes = minutes.toString().length<2?'0'+minutes:minutes;
if(minutes<0){
hours--;
minutes = 60 + minutes;
}
hours = hours.toString().length<2?'0'+hours:hours;
$('#delay').val(hours + ':' + minutes);
});