При использовании Handsontable, как перевести выбранную ячейку в режим редактирования?

Handsontable предоставляет несколько хороших крючков, когда ячейка выбрана, но я не могу понять, как заставить ее позволить мне принудительно перевести ячейку в режим редактирования, когда она была выбрана.

Я могу определить выбор ячейки следующим образом:

Handsontable.PluginHooks.add( 'afterSelection', function( row, column ) {
    var current_td = this.getCell( row, column );
});

И оттуда я даже могу получить выбранный элемент ячейки. Но оттуда я не могу перевести ячейку в режим редактирования (где внутри нее есть активно выбранное текстовое поле). Обычно это происходит по двойному щелчку. Делать очевидное, похоже, не работает:

Handsontable.PluginHooks.add( 'afterSelection', function( row, column ) {
    var current_td = this.getCell( row, column );

    $(current_td).dblclick();
});

Кто-нибудь еще когда-либо делал это или есть мысли о том, как я могу заставить его работать?


person Jamie Poitra    schedule 18.08.2013    source источник


Ответы (3)


Для всех, кто интересуется этим вопросом, теперь есть лучший программируемый способ достижения того же результата.

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

Это выбирает ячейку (row, col) и входит в режим редактирования (то есть так же, как двойной щелчок или нажатие F2/Enter).

person Milan Milanov    schedule 22.01.2015

И я считаю, что ответил на свой вопрос:

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

Кажется, это помогает.

person Jamie Poitra    schedule 19.08.2013
comment
Спасибо за это! Мне пришлось поместить триггер f2 в setTimeout, чтобы это работало, потому что его немедленное срабатывание, похоже, вызывает нулевую ошибку внутри handsontable. запуск его после задержки помещает его в конец цепочки событий и, кажется, работает - person Jason; 05.11.2014

Режим редактирования при нажатии:

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();   
     }
   }
 }
person EngineerCoder    schedule 28.02.2017