2013-08-18 4 views
11

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

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

ответ

6

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

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

Это, кажется, сделать трюк.

+0

Спасибо за это! Мне пришлось поставить триггер f2 внутри setTimeout, чтобы сделать эту работу, потому что сразу же уволить его, кажется, вызывает пустую ошибку внутри handsontable. увольняя его после задержки, ставит его в конце цепочки событий и, похоже, работает – Jason

8

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

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

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

0

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

afterSelectionEnd: function (r, c, r2, c2) { 
    if (r == r2 && c == c2) { 
    getActiveEditor().beginEditing(); 
    getActiveEditor().enableFullEditMode(); 
    } 
} 

При добавлении enableFullEditMode(); каретка перемещается в ячейку при нажатии левой или правой кнопки вместо перехода в другую ячейку.

Anaother пример: только первая строка:

afterSelectionEnd: function (r, c, r2, c2) { 
    if (r == r2 && c == c2) { 
    if (r == 0 && r2 == 0) { 
     getActiveEditor().beginEditing(); 
     getActiveEditor().enableFullEditMode(); 
    } 
    } 
}