我正在使用's中copy/paste
实现的功能,该功能运行良好(即,如果您选择一些单元格并按下,那么这些单元格的内容将被复制到您的剪贴板中)。Slickgrid
slick.cellcopymanager.js
Ctrl+c
我想以Ctrl+c
编程方式触发操作(例如,允许通过单击按钮而不是按键来进行复制/粘贴)。我知道如何定义 keydown 事件Ctrl+c
:
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 } );
尽管:-我正确选择了一个单元格(它具有selected
类)
-handleKeyDown
被正确触发
-e
并且args
内部参数handleKeyDown
看起来不错(我正在跟踪console.log
并且看不到手动之间的任何区别) ,但单元格的复制仍然不起作用Ctrl+c
和程序化尝试`
如何触发Ctrl+c
事件以便以编程方式复制单元格?