我在onSelectRow
中使用jqGrid
,当我点击鼠标左键时,它会按照我的意愿执行。当我右键单击时,它仍然执行;我想右键单击以使其具有正常功能(弹出菜单包括"检查元素")。
我想我可以退出onSelectRow
,但我需要能够检测到点击了哪个鼠标按钮。我怎样才能做到这一点? onSelectRow()
无法使用此活动,除非我无法找到。
我知道onRightClickRowEvent
有另一个处理程序,但我也读到onSelectRow
函数仍然执行,所以不会帮助我(我不知道谁它会帮助)。
我还读到了关于禁用库的右键单击处理程序的问题;我认为这是一个非常糟糕的编程,但实际上它甚至不符合这里的要求来维护右键菜单。
(还有另外一个问题;它首先说要禁用右键单击,然后重新实现选项菜单处理。我确定有一些简单的东西,我们不应该考虑后者。前者不处理我的情况,包括按原样保留右键菜单弹出窗口。)
答案 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
中,右键单击时不。我们遇到的情况是依赖于未定义的变量。
无论如何,通过执行此操作,现在会出现右键单击选项菜单,并且选择操作不会立即使其无效。