【问题标题】:How to ignore right-click in a jqGrid如何忽略 jqGrid 中的右键单击
【发布时间】:2018-02-15 20:01:25
【问题描述】:

我在jqGrid 中使用onSelectRow,当我用鼠标左键单击时,它会按我的意愿执行。当我右键单击时,它仍然执行;我希望右键单击具有正常功能(弹出菜单包括“检查元素”)。

我想我可以从onSelectRow 返回,但我需要能够检测到单击了哪个鼠标按钮。我怎样才能做到这一点? onSelectRow() 无法参加该活动,除非以某种我无法找到的方式。

我知道onRightClickRowEvent 有另一个处理程序,但我也读到onSelectRow 函数仍在执行,所以这对我没有帮助(我不知道它会是谁 帮助)。

我还阅读了有关禁用库的右键单击处理程序的信息;我认为这是非常糟糕的编程,但实际上它甚至不满足这里维护右键菜单的要求。

(关于这个还有另一个问题;它首先说禁用右键单击,然后重新实现选项菜单处理。我敢肯定有一些足够简单的东西我们不应该考虑后者。前者没有处理我的情况,其中包括保留右键菜单弹出的原样)。

【问题讨论】:

  • 是的,确实看到了,应该提到它——它说完全禁用右键单击(这并不能解决我的问题)或基本上是重新实现选项菜单。跨度>

标签: javascript jquery jqgrid


【解决方案1】:

解决方案取决于您使用的 版本 jqGrid 和 forkfree jqGrid、商业 Guriddo jqGrid JS 或版本 Free jqGrid fork 支持selectOnContextMenu: false 选项,它可以防止在contextmenu 事件中选择行(参见the line of code)。仍然可以毫无问题地使用上下文菜单。

【讨论】:

    【解决方案2】:

    您要查找的内容几乎可以在此答案中找到:https://stackoverflow.com/a/18085513/1819684

    基本上,您需要在onRightClickRow 处理程序中“取消选择”选定的行。但是,该答案在处理程序中显示return false,如果这样做,您将阻止上下文菜单显示,因此只需删除该行。

    【讨论】:

      【解决方案3】:

      其实我想做的,只要用onSelectRow的3参数版本就可以了;

      onSelectRow: function(id, status, event) {
        if (event.which == 1) { // only process left mouse button clicks
          // more code here...
        }
      

      这也解决了我们遇到的问题,即变量在onCellSelect 中设置的值,不是在右键单击时调用的。在某些情况下,我们依赖于未定义的变量。

      无论如何,通过这样做,右键单击选项菜单现在会出现,并且不会立即因选择操作而变得无用。

      【讨论】:

      • 您能写出您使用的 jqGrid 版本以及 jqGrid 的哪个分支(free jqGrid、商业 Guriddo jqGrid JS 或版本 您的帖子表明您误解了onSelectRow 是什么。它不是clickcontextmenu 事件的事件处理程序。 onSelectRow 将在处理clickcontextmenu 事件之后被调用。该行已被选中beforeSelectRow 允许在 click 事件的情况下阻止选择,但在 contextmenu 的情况下不允许。
      • 如果我直接解释我们的配置,这个 jqGrid 是 jquery-ui-1.12.1 的一部分。感谢 onSelectRow 的澄清,我希望我们可以坐下来聊一聊,这样我就可以获得更明确的信息,而不是无数帮助程度不同的例子。
      • jqGrid 不是 jQuery UI 的一部分。 jqGrid 是 jQuery 插件,只需要 jQuery,但它使用 CSS 框架 jQuery UI(jQuery UI 只需要 css 文件,不需要 js 文件)或 Bootstrap CSS 依赖于版本 您使用的 jqGrid。 jqGrid 一直存在到 4.7 版本,自 2014 年底就死了。之后有“免费 jqGrid”产品,可以完全免费使用(如旧 jqGrid)和 商业产品“Guriddo jqGrid JS”。你用(能用)哪一个?
      • 我们可以继续聊天吗?
      • 是的,我现在有时间聊天。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      相关资源
      最近更新 更多