我有一个Dojo Datagrid,其中一个列由formatter函数呈现为文本框。当我单击渲染的文本框以输入某个值时,光标会出现在文本框中,焦点会立即丢失(即光标消失 - 键入不会产生任何结果)。我必须再次在文本框上单击以设置焦点 - 然后才能输入值。
有没有办法将焦点设置在第一次点击本身?
以下是代码:
<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;
}
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
尝试将editable和alwaysEditing属性设置为true:
<th alwaysEditing="true" editable="true" field="field1" formatter="renderTextBox" width="20%" >Field 1</th>
答案 2 :(得分:0)
在创建dojox.grid.EnhancedGrid
的实例时,请使用singleClickEdit
属性并将其设置为true
。
这将在第一次点击时将焦点设置在文本框或任何其他小部件上。
答案 3 :(得分:0)
在我的情况下,下面的代码完全适用于文本框焦点问题:
dojo.connect(this.floorTable,"onRowClick",this,function(row){
row.target.focus();
});
其中this.floorTable
是表对象。