Ответ 1
И я считаю, что я ответил на свой вопрос:
Handsontable.PluginHooks.add( 'afterSelectionEnd', function() {
f2_event = $.Event( 'keydown', { keyCode: 113 } );
this.$table.trigger(f2_event);
});
Это похоже на трюк.
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();
});
Кто-нибудь еще когда-либо делал это или думал о том, как я могу заставить его работать?
И я считаю, что я ответил на свой вопрос:
Handsontable.PluginHooks.add( 'afterSelectionEnd', function() {
f2_event = $.Event( 'keydown', { keyCode: 113 } );
this.$table.trigger(f2_event);
});
Это похоже на трюк.
Для всех, кто интересуется этим вопросом, теперь есть лучший способ программирования для достижения того же результата.
this.selectCell(row, col);
this.getActiveEditor().beginEditing();
Это выбирает ячейку (row, col)
и переходит в режим редактирования (т.е. как двойной щелчок или нажатие F2/Enter).
Режим редактирования при нажатии:
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();
}
}
}