16

私のアプリケーションはユーザーからの入力を必要とします。テキスト ボックスに値を入力すると、ユーザーは Enter (Return Key) を押すと、ボタンの onclick イベントが呼び出されます。これは IE、FF では正常に機能しますが、Chrome では機能しません。クロムで入力すると、キープレスイベントが生成されません ここに私のコードスニペットがあります

 $('#myDiv').keypress(function (e) {
    alert("Key  pressed");
    if (e.keyCode == $.ui.keyCode.ENTER) {

     alert("enter pressed");
    }
  });

誰でもこれについて意見を提供できますか?

4

4 に答える 4

27

クロスブラウザ方式:

$('#myDiv').keydown( function(e) {
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
    if(key == 13) {
        e.preventDefault();
        alert("enter pressed");
    }
});

Chrome 24 でテスト済み: http://jsfiddle.net/PTauw/1/

于 2013-01-25T09:08:05.180 に答える
6

keypressどの文字が入力されたかを検出するための正しいイベントです (ただし、この特定のケースでは、Enter キーを検出するイベントkeydownも同様に機能します)。ただし、keypress イベントで入力された文字を取得する方法はブラウザー間で一貫性がないため、jQuery はwhichプロパティで正規化します。これがあなたが望むものです:

$('#myDiv').keypress(function (e) {
    alert("Key pressed");
    if (e.which == $.ui.keyCode.ENTER) {
        alert("enter pressed");
    }
});

キーイベントの決定的なリファレンス: http://unixpapa.com/js/key.html

于 2013-01-25T09:29:47.323 に答える
0

このリンクはあなたに役立つかもしれません...
Api Jquery Key Press またはこのコードで試してください

キープレスをキーダウンに変更します。

$('#myDiv').keydown(function(e) {

   // your logic
   alert("Key  pressed");
   if (e.keyCode == $.ui.keyCode.ENTER) {
       alert("enter pressed");
   }

});
于 2013-01-25T09:12:21.287 に答える
-1

Chrome はENTERではなく keyで動作しているよう13です。

これは、を含むすべてのブラウザで機能しますCHROME

  $('#myDiv').keydown(function(e) {
       if ((e.which == 13) || (e.which == keyCode.ENTER)) {

    alert("enter pressed");
  }
于 2014-04-02T13:44:34.210 に答える