2013-08-18 2 views
11

Handsontable은 셀을 선택했을 때 좋은 후크를 제공합니다.하지만 셀을 선택하면 강제로 셀을 편집 모드로 만들 수 없습니다.Handsontable을 사용하여 선택한 셀을 편집 모드로 강제 전환하는 방법?

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

을 거기에서 난 선택된 셀 소자를 얻을 수

I는 다음과 같이 셀 선택을 검출 할 수있다. 하지만 거기에서 나는 세포를 편집 모드 (그것이 활발하게 선택된 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

감사합니다! 나는이 작업을하기 위해 fTime 트리거를 setTimeout 안에 두어야 만했다. 바로 발사가 핸즈프리 내에서 Null 에러를 일으키는 것 같기 때문이다. 지체가 발생하면 이벤트 체인의 끝에 넣고 작동하는 것처럼 보입니다. – Jason

8

이 질문에 흥미가있는 사람이라면 이제는 동일한 결과를 얻을 수있는 더 나은 프로그래밍 방식이 있습니다.

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

이것은 (row, col) 셀을 선택하고 (더블 클릭 또는 F2 입력/누르는 즉 같은) 편집 모드로 들어간다. 클릭에

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