2012-02-06 50 views
0

其他人已經問過這個問題,但是我找不到任何好的答案。需要jqGrid內聯編輯才能將焦點轉到單擊單元格

隨着jqGrid的和在線編輯,是有可能得到的是選擇在該行的第一個單元格,而不是專注於電池?在onCellSelect處理程序中,我可以移動焦點,但它會立即返回到行上的第一個單元格。

Firebug在我跳出onCellSelect回調時一直崩潰,所以我沒有對jqGrid源碼本身做出多少進展。

回答

0

我在關閉的問題here上回答。如果您使用雙擊進入內聯編輯,您可以直接使用我以前的答案。

如果您使用選擇行(onSelectRow回調),您將有問題檢測被單擊的單元格,因爲當前版本的jqGrid沒有事件對象作爲參數。 github上的最後一個版本的jqGrid已經具有參數(請參閱my suggestionthe fix),並且您可以在onSelectRow中執行相同操作。

如果需要使用發佈的版本4.3.1的jqGrid,需要將焦點設置在onSelectRow回調可以使用另外beforeSelectRow回調到最後e.target緩存在一個變量和使用它的onSelectRow內。

1

我用這個代碼(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); 
} 
0

我莫名其妙地成功通過DBLCLICK事件附加表中的每一個TD做到這一點,我知道這是不是最好的方法,但你可以自由優化它的方式,你也可以忽略只用於測試的setTimeout。

$("#jqGrid").on("dblclick", "td", function (event) { 
       // setTimeout(function() { 
         console.log(this); 
         $(event.target).find("input,select").focus();      
        // }, 0); 
       }); 

希望這會幫助你。

相關問題