如何忽略jqGrid中的右键单击

时间:2018-02-15 20:01:25

标签: javascript jquery jqgrid

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

我想我可以退出onSelectRow,但我需要能够检测到点击了哪个鼠标按钮。我怎样才能做到这一点? onSelectRow()无法使用此活动,除非我无法找到。

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

我还读到了关于禁用库的右键单击处理程序的问题;我认为这是一个非常糟糕的编程,但实际上它甚至不符合这里的要求来维护右键菜单。

(还有另外一个问题;它首先说要禁用右键单击,然后重新实现选项菜单处理。我确定有一些简单的东西,我们不应该考虑后者。前者不处理我的情况,包括按原样保留右键菜单弹出窗口。)

3 个答案:

答案 0 :(得分:1)

解决方案取决于jqGrid的版本 fork ,您使用的是free jqGrid,商业Guriddo jqGrid JS或旧的jqGrid版本< = 4.7)。我开发的Free jqGrid fork支持selectOnContextMenu: false选项,这会阻止在contextmenu事件中选择行(请参阅the line of code)。人们仍然可以毫无问题地使用上下文菜单。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

实际上,我想做的事情只需使用onSelectRow的3参数版本即可完成;

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

这也消除了我们遇到的问题,其中变量的值设置在onCellSelect中,右键单击时。我们遇到的情况是依赖于未定义的变量。

无论如何,通过执行此操作,现在会出现右键单击选项菜单,并且选择操作不会立即使其无效。