使用 Handsontable 时如何强制选定单元格进入编辑模式?
Posted
技术标签:
【中文标题】使用 Handsontable 时如何强制选定单元格进入编辑模式?【英文标题】:When using Handsontable how to force a selected cell into edit mode? 【发布时间】:2013-08-20 16:09:00 【问题描述】:Handsontable 为选择单元格时提供了一些不错的钩子,但我似乎无法找到方法来让我在选择单元格时强制它进入编辑模式。
我可以像这样检测单元格选择:
Handsontable.PluginHooks.add( 'afterSelection', function( row, column )
var current_td = this.getCell( row, column );
);
我什至可以从那里获得被选中的单元格元素。但是从那里我似乎无法触发单元格进入编辑模式(其中有一个主动选择的 textarea 字段)。这通常由双击触发。做显而易见的事情似乎不起作用:
Handsontable.PluginHooks.add( 'afterSelection', function( row, column )
var current_td = this.getCell( row, column );
$(current_td).dblclick();
);
还有其他人做过这个或对我如何让它工作有想法吗?
【问题讨论】:
【参考方案1】:对于任何对此问题感兴趣的人,现在有一种更好的可编程方式来实现相同的结果。
this.selectCell(row, col);
this.getActiveEditor().beginEditing();
这将选择(row, col)
单元格并进入编辑模式(即与双击或按 F2/Enter 相同)。
【讨论】:
【参考方案2】:我相信我已经回答了自己的问题:
Handsontable.PluginHooks.add( 'afterSelectionEnd', function()
f2_event = $.Event( 'keydown', keyCode: 113 );
this.$table.trigger(f2_event);
);
这似乎可以解决问题。
【讨论】:
谢谢!我必须将 f2 触发器放在 setTimeout 中才能完成这项工作,因为立即触发它似乎会导致 handsontable 内部出现空错误。在延迟后触发它会将其置于事件链的末尾并且似乎可以工作【参考方案3】:点击编辑模式:
afterSelectionEnd: function (r, c, r2, c2)
if (r == r2 && c == c2)
getActiveEditor().beginEditing();
getActiveEditor().enableFullEditMode();
当你添加 enableFullEditMode(); 插入符号在按左键或右键时在单元格中移动,而不是跳转到另一个单元格。
另一个例子:只有第一行:
afterSelectionEnd: function (r, c, r2, c2)
if (r == r2 && c == c2)
if (r == 0 && r2 == 0)
getActiveEditor().beginEditing();
getActiveEditor().enableFullEditMode();
【讨论】:
以上是关于使用 Handsontable 时如何强制选定单元格进入编辑模式?的主要内容,如果未能解决你的问题,请参考以下文章