其他人已經問過這個問題,但是我找不到任何好的答案。需要jqGrid內聯編輯才能將焦點轉到單擊單元格
隨着jqGrid的和在線編輯,是有可能得到的是選擇在該行的第一個單元格,而不是專注於電池?在onCellSelect
處理程序中,我可以移動焦點,但它會立即返回到行上的第一個單元格。
Firebug在我跳出onCellSelect
回調時一直崩潰,所以我沒有對jqGrid源碼本身做出多少進展。
其他人已經問過這個問題,但是我找不到任何好的答案。需要jqGrid內聯編輯才能將焦點轉到單擊單元格
隨着jqGrid的和在線編輯,是有可能得到的是選擇在該行的第一個單元格,而不是專注於電池?在onCellSelect
處理程序中,我可以移動焦點,但它會立即返回到行上的第一個單元格。
Firebug在我跳出onCellSelect
回調時一直崩潰,所以我沒有對jqGrid源碼本身做出多少進展。
我在關閉的問題here上回答。如果您使用雙擊進入內聯編輯,您可以直接使用我以前的答案。
如果您使用選擇行(onSelectRow
回調),您將有問題檢測被單擊的單元格,因爲當前版本的jqGrid沒有事件對象作爲參數。 github上的最後一個版本的jqGrid已經具有參數(請參閱my suggestion和the fix),並且您可以在onSelectRow
中執行相同操作。
如果需要使用發佈的版本4.3.1的jqGrid,需要將焦點設置在onSelectRow
回調可以使用另外beforeSelectRow
回調到最後e.target
緩存在一個變量和使用它的onSelectRow
內。
我用這個代碼(4.4.1的jqGrid)
onSelectRow: function (rowid, status, e) {
var setFocusToCell = function(e) {
if(!e || !e.target) return;
var $td = $(e.target).closest("td"), $tr = $td.closest("tr.jqgrow"), ci, ri, rows = this.rows;
if ($td.length === 0 || $tr.length === 0 || !rows) return;
ci = $.jgrid.getCellIndex($td[0]);
ri = $tr[0].rowIndex;
$(rows[ri].cells[ci]).find("input,select").focus();
}
setFocusToCell(e);
}
我莫名其妙地成功通過DBLCLICK事件附加表中的每一個TD做到這一點,我知道這是不是最好的方法,但你可以自由優化它的方式,你也可以忽略只用於測試的setTimeout。
$("#jqGrid").on("dblclick", "td", function (event) {
// setTimeout(function() {
console.log(this);
$(event.target).find("input,select").focus();
// }, 0);
});
希望這會幫助你。