jQuery:如何停止Ctrl + A的传播?

问题描述:

我目前正在开发一个依赖于地图(OpenStreetMap数据通过Leaflet.js)和地图上显示的标记的应用程序。jQuery:如何停止Ctrl + A的传播?

我实现供用户选择,这样他就可以点击标记进行选择,然后按住Ctrl键单击要添加标记来选择。这很好。现在

我希望用户能够通过按Ctrl键一个目前选择地图上的所有标记物。我用它来实现这一目标看起来像这样的代码:

jQuery(document).keydown(function(e) { 
    if (e.ctrlKey) { 
    if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a' 
     e.stopPropagation(); 
     // SELECT ALL MARKERS HERE... 
    } 
    } 
}); 

以此为据可以作为触发同时按Ctrl和A按键来讲,我想选择完成。

我的问题: 即使我增加了行停止事件的传播,浏览器(在Chrome和Opera测试)仍然不平常Ctrl + A全选,也就是附加到我的标志越来越通过我在地图上的自定义选择实现进行选择,整个网页被选中。这很烦人:在地图旁边没有可以选择的文字,所以确实没有意义 - 我想禁用CtrlA而我的地图显示。

P.S. 我试图使用How can I disable Ctrl+A (select all) using jquery in a browser?中显示的代码,但无法使其正常工作。这个功能是否真的在API中?

假设你的错误是你正在使用e.stopPropagation(),它只是停止事件的进一步冒泡(因为你的事件附加到文档 - 它是没用的)。尝试e.preventDefault()代替:

jQuery(document).keydown(function(e) { 
    if (e.ctrlKey) { 
    if (e.keyCode == 65 || e.keyCode == 97) { // 'A' or 'a' 
     e.preventDefault(); 
     // SELECT ALL MARKERS HERE... 
    } 
    } 
}); 

这对我的作品罚款this demo

+0

啊,我们发现它是一样的第二... :)在这里,你去好先生,有一个接受。 – fgysin

+0

不适合我在铬 –

啊,我找到了窍门:

e.preventDefault(); 

执行任何默认动作停止浏览器。在上述情况下,这可防止通常在Ctrl + A上触发的全选事件。