9

Web アプリで単体テストを作成していEnterます。たとえば、テキスト ファイルへのダウンロード ボタンがクリックされた後、ページからキーが押されたイベントを自動的にトリガーしたいと考えています。jQueryまたはJavascriptでこれを行うにはどうすればよいですか?

4

4 に答える 4

7
  1. ユーザーがボタンをクリックしたかどうかを示す変数を作成します。

    var clicked = false;
    
  2. ボタンにイベント リスナーを追加して、ユーザーがボタンをクリックしたときにclicked変数が になるようにしtrueます。

    myButton.addEventListener('click', function(){
      clicked = true;
    });
    
  3. keypressイベント リスナーを追加します。

    document.addEventListener('keypress', function(e) {
      // `e` is the event
    });
    
  4. そのイベントリスナー内で、ユーザーが以前にクリックしたかどうかを確認します

    if(clicked) {
      // ...
    }
    
  5. もしそうなら、押されたキーをチェックしてください。Enterのキーコードは13です。

    var keynum = e.keyCode||e.which;
    if(keynum == 13) {
       // ...
    }
    
  6. 押されたキーがエンターだった場合は、

    clicked = false;
    

    そうしないと、ユーザーがボタンをクリックして Enter キーを押すと、ボタンを再度クリックする必要がなくなります。

  7. その後、コードを実行します。たとえば、これはf2 秒後に関数を呼び出します。

    setTimeout(f, 2000);
    

ライブデモ

var clicked = false;
document.querySelector('#btn').addEventListener('click', function(){
  clicked = true;
  snippet.log("You clicked the button. `clicked` is now `true`");
});
document.addEventListener('keypress', function(e) {
  if(clicked) {
    var keynum = e.keyCode || e.which;
    if(keynum == 13) {
      clicked = false; 
      snippet.log("`clicked` is now `false`. Waiting 2 seconds...");
      setTimeout(f, 2000);
    }
  }
});
function f() {
  snippet.log("Function `f` executed successfully!");
}
#btn {
  border: 3px solid red;
  cursor: pointer;
}
<div id="btn">Click me, and then press enter.</div>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --><script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

于 2012-08-13T01:05:34.990 に答える
6

私があなたの質問を正しく理解すれば、これはあなたが探しているものです

<html>
<head>

  <script src="http://code.jquery.com/jquery-latest.js"></script>

  <script type="text/javascript">
      $(document).keydown(function(event){
            if(event.keyCode == 13){                
                alert("keypressed");
            }
        });

function clickevent()
{                
     var e = $.Event("keydown");
     e.which = 13;
     e.keyCode = 13;
     $(document).trigger(e);     
}
</script>

</head>
<body id="thebody">
  <input type="button" onclick="clickevent()" value="click me first">
</body>
</html>
于 2012-08-13T01:31:32.003 に答える
2

Enterイベントをトリガーするキーを自動的に入力することについて話している場合はsubmit、代わりにこれを使用できます。

$("#formID").submit();


ボタンが押された後にこのイベントをトリガーするには、次のようにします。

$("#buttonID").click(function() {
    $("#formID").submit(); // submits form
});
于 2012-08-13T00:53:54.613 に答える
1
$("#txtfield").keyup(function(e) {
 if(e.keyCode == 13) {
  $("#submit").submit();
 }
});
于 2012-08-13T01:01:57.603 に答える