Невозможно установить фокус на текстовое поле в сетке данных додзё - PullRequest
1 голос
/ 12 октября 2009

У меня есть таблица данных Dojo с одним из столбцов, которые отображаются как текстовое поле с помощью функции форматирования. Когда я нажимаю на отображаемое текстовое поле, чтобы ввести какое-либо значение, курсор появляется в текстовом поле, и фокус сразу теряется (то есть курсор исчезает - при наборе текста ничего не происходит). Мне нужно еще раз щелкнуть текстовое поле, чтобы установить фокус - только тогда я могу ввести значения.

Есть ли способ установить фокус на самом первом щелчке?

Вот код:

<table dojoType="dojox.grid.DataGrid" store="selectedItemsStore" class="resultsGridClass" jsid="selecteditems">
<thead>
<tr>
<th field="field1" formatter="renderTextBox" width="20%">Field 1</th>
</tr>
</thead>
</table>

А вот функция форматирования:

function renderTextBox(value, rowIndex) {
var htmlString = "<input type='text' name= 'exp' />";
return htmlString;
}

Ответы [ 4 ]

1 голос
/ 14 сентября 2012
window.setTimeout(function() {
    dijit.byId("profileGrid").scrollToRow(rowIndex);
    dijit.byId("profileGrid").focus.setFocusIndex( rowIndex, 0 );
    dijit.byId("profileGrid").edit.setEditCell( dijit.byId("profileGrid").getCell(0), rowIndex );
},10);
0 голосов
/ 06 июля 2017

В моем случае приведенный ниже код отлично работает для проблемы с фокусом текстового поля:

dojo.connect(this.floorTable,"onRowClick",this,function(row){               
    row.target.focus();             
});

где this.floorTable - табличный объект.

0 голосов
/ 15 июня 2012

При создании экземпляра dojox.grid.EnhancedGrid используйте атрибут singleClickEdit и установите его как true.

Это установит фокус на текстовое поле или любой другой виджет при первом нажатии.

0 голосов
/ 16 октября 2009

Попробуйте установить атрибуты editable и alwaysEditing в значение true:

<th alwaysEditing="true" editable="true" field="field1" formatter="renderTextBox" width="20%" >Field 1</th>
...