在这里,我们不检查是否已按下Shift键。
我需要在功能调用上按Shift键
我们提供了可以在元素按键上按下键的代码。
e = jQuery.Event("keypress");
e.which = 13 //choose the one you want
$("#test").keypress(function(){
alert('keypress triggered');
}).trigger(e);
我的要求是Shift键应在我的函数上保持按下状态,并在另一个函数上释放。
function called(){
.. code ..
// need shift key pressed
}
function called_another_func(){
.. code ..
// need shift key released
}
最佳答案
可以通过以下代码以编程方式触发连续的Shift键按下(16是Shift键):
$("selector").keydown(function(event){
if(event.which === 16){
//any code you want to execute before key press
e=$.Event('keydown')
e.which=16
$("selector").trigger(e)
}
});
但是,这可能会由于递归事件调用而挂起应用程序,并在控制台中引发错误。为了防止这种情况,您将必须执行以下操作:
$("selector").keydown(function(event){
if(event.which === 16){
if("flag to check if you need to continue shift key press"){
//any code (or function call) you want to execute before key press and
//toggle the variable to break out of this recursive event trigger
e=$.Event('keydown')
e.which=16
$("selector").trigger(e)
}
}
});
$("selector").keyup(function(event){
if(event.which === 16){
//call your function
}
});
});