javascript - jquery如何捕获用户按下了Ctrl+d键?
伊谢尔伦
伊谢尔伦 2017-04-10 14:25:00
[JavaScript讨论组]

当用户添加一个网站到收藏夹时(按下Ctrl+d键)时触发一个事件,如下代码是网上摘抄的一段用Ctrl+Enter键发送内容的js代码,稍微修改了一下,将“Enter”键ASCII码13改为“d”键ASCII码100,为什么一直没有反应?

<script>
$(document).keypress(function(e){ 
if(e.ctrlKey && e.which == 100 || e.which == 10) 
    { 
        triggerSomething();
    }
})
function triggerSomething()
    {
        document.write('add bookmark successfully!');
    }
</script>
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
伊谢尔伦
$.ctrl = function(key, callback, args) {
    var isCtrl = false;
    $(document).keydown(function(e) {
        if(!args) args=[];

        if(e.ctrlKey) isCtrl = true;
        if(e.keyCode == key.charCodeAt(0) && isCtrl) {
            callback.apply(this, args);
            return false;//you can remove this line if you need bookamrk
        }
    }).keyup(function(e) {
        if(e.ctrlKey) isCtrl = false;
    });        
};

$.ctrl('D', function() {
   triggerSomething();
});

function triggerSomething() {
    document.write('add bookmark successfully!');
}

其实你是弄错了 DASCII 码和事件类型,你先测试下:

$(document).keydown(function(e) {
    alert(e.which);
})

此时你点击 D 键,你会发现是以大写 D 的值为准,为68。所以你这么写:

$(document).keydown(function(e){ 
    if(e.ctrlKey && e.which == 68) 
    { 
        triggerSomething();
    }
})
function triggerSomething()
{
    document.write('add bookmark successfully!');
}

上面那段代码可以 handle 更多的 ctrl + key 事件,如果在你的项目里有很多地方会出现 ctrl + key,那么可以把第一段代码当做一个 plugin 来用,如果只有这一处用到的话,就用下面这段吧。

黄舟

键盘上的 ASCII 码以大写为准, 所以 DSACII 码并不是 100 而是 68.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号