2012-05-31 19 views
5

ユーザーが特定のキーフレーズを入力したときにアクションを実行するためのjQueryプラグインを開発しようとしています。keypressとkeyupの組み合わせ - jQuery

たとえば、キーアップで「HELLO」と一致させたいとします。

var controllerKey = []; 
$(window).keyup(function(evt) { 
    var code = evt.keyCode ? evt.keyCode : evt.which; 
    controllerKey.push(code); 
} 
[...] 

はその後、私は、文字列「HELLO」(str.charCodeAtのおかげで())およびいくつかの他のものと私のcontrollerKeyを比較するが、これはここでは重要ではありません。 この時点ですべてが正常に機能します。私は一致させたいとき(文字列がいくつか大文字を持っていたとき、実際に)

私の問題は「HELLO」が起こります。私はフォーラムでキーアップやキーダウンが何の違いもないことを知った。

私はそれを非常にうまく管理するkeypressを使用しますが、キーの押下では矢印キーと一致するようにはできません(Chromeの場合)。

キー押しとキーアップを組み合わせることができるかどうかを知りたい(キー押しがイベントと一致しない場合のみ)。

ありがとうございます。

+0

入力の中にこのフレーズを入力していますか?また、あなたの問題はさまざまなケースの文字列を比較していることを言及し、あなたはキー押しとキーアップについて質問していますか? – lucuma

+0

いいえ、「コナミコード」のようにするが、あなたの選択したパスワードを使用するプラグインです。私は最初の文字列(キーフレーズ)をユーザー入力と比較しています –

+0

私は何も知らないと思いますが、両方のイベントを結合する答えをあなたに提供しました。 – lucuma

答えて

9

あなたは、このようにそれらを組み合わせることができます。

$(window).on('keyup keypress', function(e) { 
    if (e.type=="keyup") { 

    } else { 
     // it is keypress 
    } 
}); 
+0

その結果、s.toUpperCase()== t.toUpperCase()によって文字列を簡単に比較できます – lucuma

+0

答えが私を助けます。ありがとう。 (私はこの情報を保持したいので、私はcomparaisonのためにupperCaseを使用したくない) –

+0

これはIE上で動作しない理由は何ですか? – RMiranda

2

あなたは敏感で比較するクロスブラウザのケースを持っているために、隠し入力キーイベントを使用することができます。

関連する問題