问题 使用Handsontable时如何强制选定的单元格进入编辑模式?


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();
});

有没有其他人做过这个或者想过如何让它工作?


10934
2017-08-18 21:53


起源



答案:


对于这个问题中的任何人,现在有一种更好的可编程方式来实现相同的结果。

this.selectCell(row, col);
this.getActiveEditor().beginEditing();

这选择了 (row, col) 单元格并进入编辑模式(即双击或按F2 / Enter键相同)。


8
2018-01-22 11:46





而且我相信我已经回答了我自己的问题:

Handsontable.PluginHooks.add( 'afterSelectionEnd', function() { 
        f2_event = $.Event( 'keydown', { keyCode: 113 } );
        this.$table.trigger(f2_event);
});

这似乎可以解决问题。


6
2017-08-19 14:38



谢谢你!我必须将f2触发器放在setTimeout中才能使其工作,因为立即触发它似乎会在handsontable中导致null错误。延迟后触发它将它放在事件链的末尾并且似乎有效 - Jason


答案:


对于这个问题中的任何人,现在有一种更好的可编程方式来实现相同的结果。

this.selectCell(row, col);
this.getActiveEditor().beginEditing();

这选择了 (row, col) 单元格并进入编辑模式(即双击或按F2 / Enter键相同)。


8
2018-01-22 11:46





而且我相信我已经回答了我自己的问题:

Handsontable.PluginHooks.add( 'afterSelectionEnd', function() { 
        f2_event = $.Event( 'keydown', { keyCode: 113 } );
        this.$table.trigger(f2_event);
});

这似乎可以解决问题。


6
2017-08-19 14:38



谢谢你!我必须将f2触发器放在setTimeout中才能使其工作,因为立即触发它似乎会在handsontable中导致null错误。延迟后触发它将它放在事件链的末尾并且似乎有效 - Jason


单击编辑模式:

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();   
     }
   }
 }

0
2018-02-28 20:29