Jquery ui 如何将标准文本框命令添加到jqgrid上下文菜单
如果使用将上下文菜单添加到jqGrid并使用文本字段内联编辑,则textbox标准上下文菜单不可用,将替换为jqGrid上下文菜单 如何将标准文本框上下文菜单命令(撤消、剪切、复制、粘贴、删除、全选)添加到jqGrid conext菜单或如何显示文本框内联编辑的标准上下文菜单 更新 在内联编辑中,如果通过右键单击黄色背景或“自动完成”框打开标准菜单,并且在打开标准浏览器上下文菜单后,自定义菜单未关闭,则会出现两个菜单Jquery ui 如何将标准文本框命令添加到jqgrid上下文菜单,jquery-ui,jqgrid,contextmenu,Jquery Ui,Jqgrid,Contextmenu,如果使用将上下文菜单添加到jqGrid并使用文本字段内联编辑,则textbox标准上下文菜单不可用,将替换为jqGrid上下文菜单 如何将标准文本框上下文菜单命令(撤消、剪切、复制、粘贴、删除、全选)添加到jqGrid conext菜单或如何显示文本框内联编辑的标准上下文菜单 更新 在内联编辑中,如果通过右键单击黄色背景或“自动完成”框打开标准菜单,并且在打开标准浏览器上下文菜单后,自定义菜单未关闭,则会出现两个菜单 如何解决此问题?在上下文菜单中执行“复制”、“粘贴”等命令并不容易。。。因此
如何解决此问题?在上下文菜单中执行“复制”、“粘贴”等命令并不容易。。。因此,我决定修改我的演示从您的前一个问题。仅当页面不包含选定文本时,关联菜单中才会显示 第一个问题是
jquery.contextmenu.js
的原始代码包含以下代码片段:
$(this).bind('contextmenu', function(e) {
// Check if onContextMenu() defined
var bShowContext = (!!hash[index].onContextMenu) ? hash[index].onContextMenu(e) : true;
if (bShowContext) display(index, this, e, options);
return false;
});
因此contextmenu
处理程序总是返回false
,并阻止创建标准上下文菜单。我将代码修复为以下内容(您可以下载完整的修改代码):
我修改了所描述的createContexMenuFromNavigatorButtons
函数的代码
onContextMenu: function (e) {
var rowId = $(e.target).closest("tr.jqgrow").attr("id"), p = grid[0].p, i,
lastSelId;
if (rowId && getSelectedText() === '') {
...
return true;
} else {
return false; // no contex menu
}
}
使用getSelectedText()
并仅在未选择文本时创建关联菜单。因此,仅当未选择任何文本时,您才会看到自定义上下文菜单;如果存在文本选择,则会看到标准上下文菜单(取决于web浏览器):
更新:我根据答案修改了关于jquery.contextmenu.js
的错误报告。我希望plugins
子目录中包含的jquery.contextmenu.js
的主代码很快就会有变化
更新2:如何查看jqGrid 4.3中包含的jqGrid主代码中已包含的所有修复程序
更新3:如果您想为所有
、
和
元素启用标准上下文菜单,您只需修改onContextMenu
回调中的代码即可。比如说
onContextMenu: function (e) {
var p = grid[0].p, i, lastSelId,
$target = $(e.target),
rowId = $target.closest("tr.jqgrow").attr("id"),
isInput = $target.is(':text:enabled') ||
$target.is('input[type=textarea]:enabled') ||
$target.is('textarea:enabled');
if (rowId && !isInput && getSelectedText() === '') {
...
双击将激活内联编辑的另一个窗口。非常感谢。如果未选择文本,则“粘贴”和“选择所有”命令仍应可用。如何将标准文本框上下文菜单添加到您创建的自定义菜单中?在这种情况下,两个命令都可用。@安德鲁斯:我认为这是不可能的。也许可以使用来自或其他人的解决方案?@安德鲁斯:我以前看到过答案,但在纯JavaScript解决方案中,使用Flash不是我的选项。此外,标准的上下文菜单在不同的浏览器中是完全不同的。谢谢。复制命令可以使用javascript提示符来实现,如下所述。如何实现全选、粘贴、删除命令?看起来一切都可以用javascript实现。
onContextMenu: function (e) {
var p = grid[0].p, i, lastSelId,
$target = $(e.target),
rowId = $target.closest("tr.jqgrow").attr("id"),
isInput = $target.is(':text:enabled') ||
$target.is('input[type=textarea]:enabled') ||
$target.is('textarea:enabled');
if (rowId && !isInput && getSelectedText() === '') {
...