3

これについて私が見つけたのは、キー コードに関しては、さまざまな Web ブラウザー間で矛盾があるということだけです。

次のコードは、Safari、Opera、および Chrome で Enter キーを押したときに正常に実行されますが、Firefox では実行されません。

FF9.0.1を使っています

問題が発生する 2 つのコード スニペットを次に示します。

1)

//Post something
$('#postDiv').on('keydown', '#posttext', function(e) {
    if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
        post($(this));
    }
});

2)

//Comment on a post
$('.commenttext').live('keydown', function(e) {
    if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
        comment($(this));
    }
});

どちらの関数も呼び出されません。

前もってありがとう:-) デニス

編集1

e.which のみでさらにテストを行ったところ、 && !event.shiftKey を省略しても機能することに気付きました - どうやら FF はそのコマンドを認識していないようです。それに代わるものはありますか?ユーザーが投稿を送信せずに Shift+Enter を押すことができるようにしたいと思います。if (e.which==13 && e.which!=16) という条件を既に試しましたが、役に立ちませんでした。

編集2 - 解決策

まず、すべての回答に感謝します! もちろん、event.shiftKey ではなく、e.shiftKey でなければなりません。現在、すべてのブラウザーで動作します (まだ試していないのは IE だけです)。

4

2 に答える 2

4

http://api.jquery.com/event.which/から

event.which プロパティは、event.keyCode と event.charCode を正規化します。キーボードのキー入力は event.which を監視することをお勧めします。

e.keyCode を使用する必要はありません。e.which != 13 でも e.keyCode を使用すると問題が発生する可能性があります。制御構造から e.keyCode 評価を削除した後も問題が続くことを確認しましたか?

于 2012-05-03T21:40:52.770 に答える
1

keyCodeandの両方を実行する必要はありません。 and をwhich使用するだけwhichで、すべてのブラウザで問題なく動作します:)

http://api.jquery.com/event.which/

于 2012-05-03T21:40:18.493 に答える