【发布时间】:2012-07-30 09:24:12
【问题描述】:
我正在使用在Slickgrid 的slick.cellcopymanager.js 中实现的copy/paste 功能,该功能运行良好(即,如果您选择一些单元格并按Ctrl+c,那么这些单元格的内容将被复制到您的剪贴板中) .
我想以编程方式触发Ctrl+c 操作(例如,允许通过单击按钮而不是按键来进行复制/粘贴)。我知道如何为Ctrl+c 定义keydown 事件:
var e = jQuery.Event("keydown");
e.which = 67;
e.ctrlKey = true;
但是我无法找出触发该事件的对象以及如何模拟手册Ctrl+c。首先,我尝试了一个无效的事件的简单触发器:
-div_dom_from_selected_cell.trigger(e); // nothing happens
-grid_dom_wrapper.trigger(e); // nothing happens
-$('body').trigger(e); // nothing happens
-my_grid.trigger(e); // trigger is not a function
然后我扩展slick.cellcopymanager.js,使handleKeyDown函数对外可用:
$.extend(this, {
"init": init,
"destroy": destroy,
"clearCopySelection": clearCopySelection,
"handleKeyDown": handleKeyDown, // ADDED THIS LINE
"onCopyCells": new Slick.Event(),
"onCopyCancelled": new Slick.Event(),
"onPasteCells": new Slick.Event()
});
并尝试使用它:
var copyManager = new Slick.CellCopyManager();
copyManager.init(my_grid);
copyManager.handleKeyDown(e, { cell: cell, row: row, grid: my_grid } );
尽管如此,单元格的复制仍然无法正常工作:
-me 正确选择了一个单元格(它有 selected 类)
-handleKeyDown 被正确解雇
-e 和 args 内部的参数 handleKeyDown 看起来不错(我正在使用 console.log 进行跟踪,并且看不出手动 Ctrl+c 和编程尝试之间有任何区别`
如何触发Ctrl+c 事件以编程方式复制单元格?
【问题讨论】:
标签: javascript triggers copy slickgrid