2017-03-11 2 views
1

私は主にjavascriptを使用してタイマーを持っていますが、現在のところ起動/停止機能は正常に動作しています。ユーザーが「停止」ボタンを押すと、#time要素から時刻が取得され、10進数値に変換され、非表示の#counter要素が更新されます。たとえば、1時間半は1.50に変換されます。JSタイムトラッカーが正常に動作しない

私の問題は、ユーザーが手動で時間を編集できるようにするためです。これを行うために作成された小さなプラグインがあります。

2つの問題があります:ユーザーが手動でダブル要素をクリックし、調整することで、自分の時間を追加した場合

  1. を救うヒットしていたことが提出されるように、#counter要素が更新されていません時間を0として設定する。
  2. ユーザーが時間を手動で設定してから[開始]ボタンを押すと、指定した時刻ではなく0から時計が開始されます。あなたが表示されますことフィドルでJSブロックの底部に向かってhttps://jsfiddle.net/pkj7wyLu/

    ::私は毎回発射イベントであると考えてい

    //implement plugin 
         $('span#time').editable().on('editsubmit', function (event, val) { 
          console.log('text changed to ' + millisecondsToHours(val)); 
         }); 
    

    を私はここにJSフィドルを用意して

ユーザは手動で時間を入力する。

質問:誰かが手動で時刻を入力すると、自動的に#counterフィールドが変換された値で更新され、開始時刻を押すとその時刻から開始されます。私が試した何

私はformat(Time)機能で遊んでみましたし、それが現在のコンソールに値を印刷しようとしているが、私は、私はあなたのclsStopwatchクラスでオーバーライドメソッドを作成した結果

答えて

2

を取得していない午前、そのよう:

this.override = function(time) { 
     lapTime = time; 
} 

これは、ミリ秒単位の時間を渡し、lapTimeを更新します。これは、ID #time要素のスパンで編集した文字列からのミリ秒数を返します

function stringToMilliseconds(str) { 
     var a = str.split(':'); // split it at the colons 
     var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
     return seconds * 1000; 
} 

:これを行うには、私は文字列を受け取り、新たな機能を作成しました。

最後に、私はオーバーライドを呼び出すために、編集可能なイベントを提出更新:ここで

$('span#time').editable().on('editsubmit', function (event, val) { 
     x.override(stringToMilliseconds(val)); 
}); 

ができます更新JSFiddle

希望です。

+0

これは非常に役に立ちます。ありがとうございました! – Derek

+0

@Derek問題がなければ、何かが必要な場合は教えてください。マット –

関連する問題