2017-06-29 9 views
1

フォーム上のテキスト入力のキーアップイベントに反応するjqueryの次の行があります。ここで説明するようにkeyupタブキーを押しを無視するこの作品関数を実行するときにjquery .onを使用する

$('#primarySearch input[type="text"]').on('keyup', this, processPrimarySearch); 

が、私はそれを適応したい:Keyup event behavior on tab

私は動作しないことができる再する方法は、関数がprocessPrimarySearchと呼ばれる実行されますprocessPrimarySearchを呼び出す前にthisを渡す方法がわからないので、これを書いてください。たとえば、私は次のことを持っているが、それは動作しませんし、私は私はそれを動作させるために書くことになってるのか理解していない:

$('#primarySearch input[type="text"]').on({ 

    "keyup": function(e) { 
     if (e.which != 9) { 
      // No reference to 'this'! 
      processPrimarySearch(); 
     } 
    } 
}); 

function processPrimarySearch() { 
    // ... 
} 

答えて

3

あなたのロジックがほとんど正しいです、あなただけにcall()を使用する必要があります関数のコンテキストを提供します。試してみてください:

$('#primarySearch input[type="text"]').on({ 
    "keyup": function(e) { 
    if (e.which != 9) { 
     processPrimarySearch.call(this); 
    } 
    } 
}); 

function processPrimarySearch() { 
    // ... 
} 
+0

完璧に動作します。どうもありがとうございます。私は '.call()'を認識していなかったので、さらにこれを見ていきます。 – Andy

+0

問題ないです。喜んで助けてください。参照用のドキュメントは次のとおりです。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call –

関連する問題