2017-02-09 8 views
0

私はJavascriptで簡単なクラスを構築しようとしています。ユーザーが入力フィールドに入力しているかどうかを確認することができます。コールバックメソッドを作成するにはどうすればいいですか?

私の現在のコードは次のようになります。

var CheckTyping = function(){ 
      return { 
       typingTimer: null, 
       doneTypingInterval: 2000, 
       doneTyping : false, 
       done : function(callback){ 
        return callback(); 
       }, 
       start: function(){ 
        clearTimeout(this.typingTimer); 
         this.typingTimer = setTimeout(this.done, this.doneTypingInterval); 
       }, 
       end: function(){ 
        clearTimeout(this.typingTimer); 
       } 
      } 
     }(); 

HTML: JS

CheckTyping.done(function(){ 
     // this is my callback function which should work only when user is done typing. 
     // do something   
    }); 

<input onkeyup='CheckTyping.start()' onkeydown='CheckTyping.end()'> 

が、私は私のAPIは、このような何かを見てみたいです

現在、コールバック関数が自動的に実行されています。私はあなたが

return (function() { 
    var _done = null; 
    return { 
     typingTimer: null, 
     doneTypingInterval: 2000, 
     doneTyping : false, 
     done : function(callback){ 
      _done = callback; 
     }, 
     start: function(){ 
      clearTimeout(this.typingTimer); 
       this.typingTimer = setTimeout(_done, this.doneTypingInterval); 
     }, 
     end: function(){ 
      clearTimeout(this.typingTimer); 
     } 
    }; 
}()) 

またはコールバックを保存するための他の方法のような何かを試みることができるのsetTimeout

答えて

1

によって呼び出されたときに目的球のみを実行したいです。次に、タイムアウトで保存された関数を使用します。 end()メソッドがタイムアウトではなくコールバックをトリガーするように、ロジックを変更したいかもしれません。手掛かりは、コールバックをどこかに保存しなければならないということです。書かれているように、doneメソッドを使用した瞬間にコールバックがトリガされただけです。

+0

ありがとう、私は本当に近くでした。 :) – Mohan

関連する問題