键盘事件不会在页面加载时触发

时间:2017-09-13 11:12:00

标签: javascript jquery keyup onkeyup

我已经实现了代码来检测“窗口徽标键”+“向上箭头”键事件的键组合。当用户在文本框内单击并按住“Win +向上箭头”时,我显示警告消息。手动工作正常。但我试图在页面加载时触发相同,它无法正常工作。

$(document).ready(function() {

  var e = jQuery.Event('keyup');
  e.metaKey = true;
  e.which = 38; //up arrow

  // Not working
  $("#test").trigger(e);

  // or

  // Not working
  $("#test").keyup();


  $("#test").keyup(function(e) {

    if (e.which == 38 && e.metaKey == true) {
      alert('win + Up arrow pressed');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="test" type="text" />

2 个答案:

答案 0 :(得分:0)

你试过这种方式吗? 你应该在调用触发器之前声明你的事件处理程序。

 $( "#test" ).on( "keyup", function (e){ 
     if(e.which == 38  && e.metaKey == true) 
     {
        alert('win + Up arrow pressed');
     }
 });
 $( "#test" ).trigger( "keyup" );

答案 1 :(得分:0)

这是因为您在调用keyup后声明了事件处理程序。

因此,为了使你的代码有效,你必须写下它:

$(document).ready(function() {

    $("#test").keyup(function (e){ 
        if(e.which == 38  && e.metaKey == true) {
            alert('win + Up arrow pressed');
        }
    });

    $("#test").keyup();

});