0

2 つの input type="time" フィールドを含むフォームがあります。jQueryを使用して2つの時間の差に基づいて更新したいフォームに「遅延」と呼ばれる3番目のinput type="time"フィールドがあります。

私は答えを探しましたが、これまでのところうまくいく解決策を思いつくことができませんでした. input type="time" フィールドには時間/分のみが含まれているため、次のようなことを試しました:

<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 応答が返されます。別の Stackoverflowの質問からこのコードを取得しました。そこで質問した人も同じ 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 の input type="time" フィールドに関連する結果はほとんどないように思われるため、これまでのところ運がありませんでした。

編集: jsFiddle

4

1 に答える 1

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);
});
于 2013-06-26T09:16:29.107 に答える