执行某个操作后,如何自动触发输入键按下事件?

时间:2012-08-13 00:52:45

标签: javascript jquery html

我正在我的网络应用程序中编写一些单元测试,并且我想在我的页面中自动触发 Enter 按键事件,例如单击下载到文本文件按钮。我怎么能在jQuery或Javascript中做到这一点?

4 个答案:

答案 0 :(得分:8)

  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. 如果他这样做,请检查按下的键。输入的密钥代码是13。

    var keynum = e.keyCode||e.which;
    if(keynum == 13) {
       // ...
    }
    
  6. 如果按下了键,请使用

    clicked = false;
    

    否则,一旦用户点击你的按钮并按下回车键,就没有必要再次点击该按钮了。

  7. 之后运行您的代码。例如,这将在2秒后调用函数f

    setTimeout(f, 2000);
    
  8. 现场演示

    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>

答案 1 :(得分:4)

如果我的问题是正确的, 这就是你要找的东西

<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>

答案 2 :(得分:2)

如果您正在谈论自动输入 Enter 键来触发submit事件,您可以改用:

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

<小时/> 要在按下按钮后触发此事件,请尝试以下操作:

$("#buttonID").click(function() {
    $("#formID").submit(); // submits form
});

答案 3 :(得分:1)

$("#txtfield").keyup(function(e) {
 if(e.keyCode == 13) {
  $("#submit").submit();
 }
});