javascript - 在 Javascript/Jquery 中按住一个按键(Shift 键)

标签 javascript jquery

这里我们不检查是否按下了 shift 键。 我需要的是在函数调用时按下 shiftkey

我们有代码可以在元素按键时按下一个键。

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
        }
    });
});

关于javascript - 在 Javascript/Jquery 中按住一个按键(Shift 键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200518/

相关文章:

jquery - 将显示模式置于基础中心

javascript - 为什么这个 javascript (jquery) 函数似乎运行不正常?

javascript - Promise 数组一旦完成就解决 Promise?

jquery - 通过 AJAX (jQuery/Node.js) 提交包含文件字段的表单

javascript - $.getJSON 没有做任何事情

javascript - bxSlider - 将 div 放置在 slider + 文本和背景中

javascript - 两条记录插入到 Mysql 数据库中而不是一条

javascript - 导入 JSONObject 抛出 "not found"错误

带有 Twitter typeahead.js 的 Javascript 破坏了我的表单布局

jquery - 请求仅适用于循环中的第一项?