2017-08-09 2 views
-1

キーを押してから離したときにjQueryを使用してチェックしたいと思います。リリース後にのみ、関数を実行したい(これを行う唯一の方法はjQueryには関係ないが、両方の方法があれば、バイト数の少ない方が良いだろう)。
私は、ソリューションがkeyup()keydown()、またはkeypress()の関数の組み合わせを使用すると確信していますが、コードをどのように連結してコードが望ましい出力を受け取るかはわかりませんでした。jQueryを使用してキーを押してから解放したときの検出

$("body").keydown(function(event) { 
    $("body").keyup(function(event) { 
     console.log("key pressed/released"); 
     var keyPressed = keys[event.keyCode]; 
     player.hit(keyPressed); 
    }); 
}); 

しかし、それは私がキーを離した後、コンソールにログインしているkey pressed/releasedメッセージの数十になり:私の現在のコードです。 keydown()またはkeyup()のいずれかを削除すると、キーを押すか、リリースするたびにkey pressed/releasedというメッセージが記録されます。 keypress()は、keydown(),keyup()の代わりに、または単独では機能しません。私の望む結果を達成するために何をすべきですか?

+0

[Mousetrap](https://craig.is/killing/mice)を使用することを強く推奨する必要があります –

+0

*「より少ないバイト数」* - jQuery.jsファイル以外?つまり、jQueryメソッドとjQuery.jsライブラリ全体を呼び出す3行のコードは、10行の非jQueryコードよりも「少ない」でしょうか? – nnnnnn

+0

@nnnnnnはい、私はファイル自体を意味します。 –

答えて

-1

まあ、変数xを作ることができます。 xは偽です。キーアップ機能とキーダウン機能を分けてください。 keydownの下にif(!x)を追加し、xをtrueにする。 keyupの下にif(x)を追加し、xをfalseにします。 私はjqueryをコーディングしませんが、これが役立つと思いました。

1

キーを押してから離したときにjQueryを使って確認したいと思います。
リリースは、私は、関数がkeyupが発射された場合、あなたはそれは本当にですので鍵は両方、そうでない場合はそのイベントは発生しませう、押され、解放されたことを確認することができ、

まあを実行することにしたいん後にのみ、あなたが必要とするものすべて。あなたは何-noでないイベントハンドラ、内部イベントをバインドするので、その後

$(document).on('keyup', function() { 
    console.log('key was released') 
}) 

やjQueryの

document.addEventListener('keyup', function() { 
    console.log('key was released') 
}); 

のないあなたのコードは数十をロギング終わる理由、およびメッセージの数百人が、あります。

0

トリックは、2つの関数を分離し、両方の関数にアクセス可能な変数を使用することです。

キーが押されていないことから始めます。 keydown()の中で、現在キーが押されているかどうかをチェックする条件を実行します。 key_pressed変数をtrueに設定すると、条件付きで1回だけトリガされます。キーがの場合、最初にが押されます。

キーが離されたら、変数をfalseに戻して、現在キーが押されていないことを示します。このようにそれをすることの利点は、あなたがロジックをトリガーすることができるしているということです

var key_pressed = false; 
 

 
$("body").keydown(function(event) { 
 
    if (!key_pressed) { 
 
    console.log("key pressed"); 
 
    key_pressed = true; 
 
    }; 
 
}); 
 

 
$("body").keyup(function(event) { 
 
    key_pressed = false; 
 
    console.log('key released'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

を:これは、あなたが最初のキーを離した後、二次キーを押して、再度条件をトリガすることができます具体的には、キーが押されている間。

希望すると便利です。:)

+0

@Confused Soulでninja'dになったと確信していますが、コードとコードスニペットを追加していただきありがとうございます。 –

+0

男、私は2つの答えを受け入れることができたらいいと思う... –

+0

ハハええ、彼は確かに非常に速かった!彼は確かに最初の(適切な答えで)、私は本当にあなたが私の上で彼の答えを受け入れることについて不平を言うことはできません:)しかし、あなたは2つの答えを受け入れることはできません**あなたは**あなたがそれが良いと感じるならば、選択された答え(あるいは「答えを完全に受け入れない」)。さらに、評判が15に達すると、それが有用であることを示す回答を得ることができます(https://stackoverflow.com/help/privileges/vote-up)。受け入れられたものである必要はありません:) –

関連する問題