微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我目前正在开发一个依赖于地图(通过Leaflet.js的OpenStreetMap数据)和地图上显示标记的应用程序.

我为用户实现了选择,因此他可以单击标记来选择它们,然后按住Ctrl键单击以添加标记以供选择.这很好用.

现在我希望用户能够通过按CtrlA来选择当前在地图上的所有标记.我用来实现这个的代码如下所示:

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-Selection,即我的标记被地图上的自定义选择实现选中,整个网络页面被选中.这很烦人:在地图旁边没有可以选择的页面上的文字,所以实际上没有意义 – 我想在显示地图时禁用CtrlA.

附:
我试图使用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上对我很好

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐