如何将焦点设置为在jqgrid中单击以开始内联编辑的单元格
在jqgrid中,内联编辑是通过双击单元格开始的。 光标定位到第一个可编辑列。 需要第二次单击才能将光标放置到单击的单元格 如何将光标放在单击以开始内联编辑的单元格上? 在单元格编辑模式下,单击的单元格正确接收焦点如何将焦点设置为在jqgrid中单击以开始内联编辑的单元格,jqgrid,Jqgrid,在jqgrid中,内联编辑是通过双击单元格开始的。 光标定位到第一个可编辑列。 需要第二次单击才能将光标放置到单击的单元格 如何将光标放在单击以开始内联编辑的单元格上? 在单元格编辑模式下,单击的单元格正确接收焦点 function beginInlineEdit(rowID, afterSave) { var grid2 = $("#grid"); if (rowID && rowID !== lastSelectedRow) { var scr
function beginInlineEdit(rowID, afterSave) {
var grid2 = $("#grid");
if (rowID && rowID !== lastSelectedRow) {
var scrollPosition = $("#grid").closest(".ui-jqgrid-bdiv").scrollLeft();
cancelEditing($("#grid"));
lastSelectedRow = rowID;
setTimeout(function () {
grid2.closest(".ui-jqgrid-bdiv").scrollLeft(scrollPosition);
}, 100);
}
$("tr#" + lastSelectedRow + " div.ui-inline-edit, " + "tr#" + lastSelectedRow + " div.ui-inline-del").hide();
$("tr#" + lastSelectedRow + " div.ui-inline-save, " + "tr#" + lastSelectedRow + " div.ui-inline-cancel").show();
$("#grid").jqGrid('editRow', lastSelectedRow, true, null, null, null,
{ _dokdata: FormData },
afterSave,
errorfunc,
function () {
cancelEditing($("#grid"));
setFocusToGrid();
}
);
}
更新1
我尝试了IE9中的Oleg演示。问题:
oneditfunc
回调函数中,将焦点更改为单击的单元格。我的工作解决方案:
onSelectRow: function(rowid,status,e){
if(rowid && rowid!==lastSel){
jQuery('#table_salary').restoreRow(lastSel);
lastSel=rowid;
}
jQuery('#table_salary').editRow(rowid, true);
$("input, select",e.target).focus();
},
注意:
- 需要声明变量lastSel
- 表\u工资-更改表名
invokeEditRow
中,仍然使用$(“#grid”).jqGrid('editRow',lastSelectedRow,true,null,null,
。因此没有使用应设置焦点的oneditfunc
。我尝试了演示并双击了复选框。内联编辑开始,但焦点不是放在单击的复选框上,而是放在第一个可编辑列上。我正在寻找一种方法来删除不必要的水平滚动。如果更改了大量行,这将成为注释。@安德鲁斯:在某些浏览器中(例如在Google Chrome中)光标将被放置在输入元素的末尾。将插入符号移动到单击点可能会像上面所描述的那样。我想这一切都不会那么容易。@Andrus:您可以尝试使用onCellSelect
来完成此操作,或者在选择行之前在或ondblClickR中以内联模式输入ow
。所有事件都有e
参数,该参数表示对象,该对象包含有关单击鼠标的确切位置的信息。因此,一般来说,您将拥有所有需要的信息。