9

次のようなアンカータグがあります

<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" href="#">Continue</a>

ポップアップの中にあります。Enterキーを押してこのリンクをクリックする必要があります。次のコードを試しましたが、うまくいきませんでした。

$(document).ready(function(){ 
  $(document).keyup(function(event){
    if (event.keyCode == 13){
      $("#clicking").trigger('click');     
    }
  })
});

機能が動作しない理由がわかりません。同じ結果でクリック機能も使用しました。マウスクリックで正しく機能します。エンタープレスで自動的に機能させる必要があります。

次のコードは Firefox で正常に動作しています。

$(document).ready(function () {
  $(document).on("keyup", function (event) {
    if (event.which == 13) {
      document.getElementById("clicking").click();   
    }
  });
}); 

Chromeでこれを機能させるにはどうすればよいですか?

4

3 に答える 3

3

問題は、を使用していることだと思います。event.keyCodeこれは、すべてのブラウザで常に使用されているわけではありません。一部のブラウザはevent.charCode、または別のブラウザを使用event.whichします。これは、使用しているものによってサポートされる場合があります。とにかく、jQueryを使用してイベントからキーコードを取得する通常の方法は、を使用することevent.whichです。

jQueryeventは、イベントハンドラーに渡されたオブジェクトを正規化し、このような「問題」を修正して、心配する必要がないようにします。同時に、元のイベントのプロパティの一部をコピーしているようです(「元のイベントのほとんどのプロパティがコピーされ、新しいイベントオブジェクトに正規化されています。」-jQuery APIドキュメントから)。それがおそらく、他の人がコメント/回答するために「機能している」理由です。ハンドラーに渡されるeventパラメーターはjQueryによって生成/正規化されており、適切なプロパティを使用して必要なものがすべて含まれています。ただし、正しい方法は、を使用event.whichしてイベントの正規化されたキーコードを取得することです。http://api.jquery.com/event.which/

$(document).ready(function () {
    $(document).on("keyup", function (event) {
        if (event.which == 13) {
            $("#clicking").trigger('click');
        }
    });
});
于 2012-12-10T09:24:53.933 に答える
0

私はこのJSFiddleを作成しました:http://jsfiddle.net/egzsf/これ は完全に機能します。InternetExplorerのフォールバックを追加しただけです。

ポップアップはどのように見えますか?多分それはiFrameであり、それは論理的な説明になるでしょう。

コード:

<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" onclick="alert('test')" href="#">Continue</a>

$(document).ready(function(){ 
    $(document).keyup(function(e){
        if (e.keyCode == 13){
        $("#clicking").trigger('click');       

        }
    })
});​

より良い代替案はe.whichを使用することです

于 2012-12-10T09:24:30.793 に答える
0

次のコードがお役に立てば幸いです。試してみてくださいコード:

<a class="btn btn-danger" id="clicking" onclick="window.location='index.php'" href="#">Continue</a>

$(function(){
  $('body').keyup(function(e){
    if (e.keyCode == 13){  
      $("#clicking").click();
    }
  })
});
于 2012-12-10T11:40:02.233 に答える