2013-08-18 6 views
11

Handsontable fornisce alcuni simpatici hook per quando una cella è selezionata ma non riesco a capire come ottenerla per consentirmi di forzare una cella in modalità di modifica quando è stata selezionata.Quando si usa Handstable come forzare una cella selezionata in modalità di modifica?

posso rilevare la selezione di celle in questo modo:

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

E da lì posso anche avere l'elemento di cella che è stato selezionato. Ma da lì non riesco a far scattare la cella in modalità di modifica (dove ha all'interno un campo textarea selezionato attivamente). Questo è normalmente attivato da un doppio clic. Facendo l'ovvio non sembra funzionare:

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

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

Chiunque altro mai fatto questo o avere pensieri su come avrei potuto farlo funzionare?

risposta

6

E io credo di aver risposto alla mia domanda:

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

che sembra fare il trucco.

+0

grazie per questo! Ho dovuto inserire il trigger f2 all'interno di un setTimeout per fare in modo che funzioni, perché l'attivazione immediata sembra causare un errore nullo all'interno di handsontable. sparare dopo un ritardo lo mette alla fine della catena di eventi e sembra funzionare – Jason

8

Per chi è interessato a questa domanda, ora c'è un modo migliore programmabile per ottenere lo stesso risultato.

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

Viene selezionato la cella (row, col) ed entra in modalità di modifica (cioè uguale doppio click o premendo F2/Invio).

0

Edit Mode al clic:

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

Quando si aggiunge enableFullEditMode(); il cursore si muove nella cella mentre si preme il pulsante sinistro o destro invece di passare a un'altra cella.

esempio anaother: solo prima riga:

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