【问题标题】:SlickGrid multiSelect="false" does not disable keyboard multi selectionSlickGrid multiSelect="false" 不会禁用键盘多选
【发布时间】:2014-06-11 07:31:36
【问题描述】:

我在我的项目中使用 slickgrid,我想使用它的多选禁用选项。我的问题是,multiSelect="false" 用于停止鼠标多选,但我可以使用 SHIFT + 箭头组合键选择多行。

您是否也有任何简单(内置)解决方案来禁用箭头键多选,或者我必须在 onSelectedRowsChanged 事件中这样做?

谢谢。

【问题讨论】:

  • 我可以看看你的代码吗?我已经做了一个测试,它似乎可以工作
  • 我的项目很复杂,无法将其放入 jsfiddle,但我很快就会创建一个示例。
  • 谢谢,只写相关部分
  • 这是一个示例:jsfiddle.net/8TWEm/50 multiSelect: false 选项禁用 SHIFT + 鼠标和 CTRL + 鼠标,但 SHIFT + 箭头键保持启用状态。
  • 对不起,我忘了说,这不是列选择,而是行选择。

标签: javascript jquery slickgrid


【解决方案1】:

经过大量搜索,我在 slick.rowselectionmodel.js 文件的库中找到了这个 bug

在handleKeyDown函数中读取并添加这一行

function handleKeyDown(e) {
      if (!_grid.getOptions().multiSelect) {
        return false;
      }

【讨论】:

  • 谢谢!有用。它可以以某种方式合并到主要的 SlickGrid 存储库(我在这里考虑拉取请求)吗?因为我在我的项目中使用 bower,我不想以这种方式破解代码。
  • 为什么没有脚本的本地副本??
  • 实际上我们在工作场所使用 slickgrid,依赖本地副本并不安全(任何人都可以更新脚本,因此本地更改会丢失)。
  • @gsanta 源代码控制是你的朋友。
  • @gsanta 我认为如果有人更改或删除脚本,将脚本放在本地服务器而不是网络上更安全?
【解决方案2】:

如果您想要一个更安全的选项,请在绑定到 SlickGrid 的键盘事件时使用 jquery 的 event.stopImmediatePropagation() 函数,以便稍后通知 SlickGrid 事件传播将停止。

示例代码:

grid.onKeyDown.subscribe((e, args) => {
  e.stopImmediatePropagation();
  return;
});

在此处阅读有关此功能的更多信息:https://api.jquery.com/event.isImmediatePropagationStopped/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多