2017-09-13 122 views
-1

我已经实现了检测“window logo key”+“向上箭头”键事件的组合键的代码。当用户在文本框内单击并按住“Win +向上箭头”时,我会显示警告消息。它手动工作正常。但我试图在页面加载时触发它,它不工作。Keyup Event在页面加载时不触发

$(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" />

+0

你为什么要打电话keyup事件明确这样'//不工作 $(“#测试”)触发( E); 或 //不工作 $(“#test”)。keyup();'? –

+0

您需要将事件处理程序移到触发器上方。当你调用'$(“#test”)。keyup();'没有设置事件处理程序。 – George

+0

嗯,我不能理解你的问题,结帐这个jsbin链接其工作正常后,我刚刚从您的代码中删除两行 http://jsbin.com/bolaqimaxa/edit?html,js,output –

回答

0

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

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

在回答时,欢迎解释。 –

+0

我也试过你的代码,它的工作。但为什么窗户不能最大化?也许我没有在我的问题中提到过。对此,承认 –

+0

是的,你没有提到它。我不确定你可以全屏最大化浏览器窗口,但是你可以通过javascript将它调整到screen.width和screen.height。 类似于: function maximize(){ window.moveTo(0,0); window.resizeTo(screen.width,screen.height); } – proti

0

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

因此,为了使你的代码的工作,你必须把它IKE写:

$(document).ready(function() { 

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

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

}); 
+0

我试过你的代码,它的工作。但为什么窗户不能最大化?也许我没有在我的问题中提到。 –

+0

您的代码中没有任何内容与最大化窗口有关。 –

+0

一般窗口标志键+向上箭头将最大化窗口。我想如果我检测到组合键(窗口标志键+向上箭头),自动窗口将最大化,如果我错了。请告诉我我该怎么做。 –