2015-03-03 78 views
1

我正在研究如何覆蓋Kendo網格的一些默認鍵盤命令。正如我在example,和我攔截回車鍵,並且希望在下面的代碼塊做向下移動電池..Kendo Grid:如何在取消當前編輯後將焦點設置回網格單元格

if (e.keyCode == 13) { // enter 
     var current = grid.current(); 
     var index = current.index(); 
     var next = $(current).closest('tr').next('tr');      

     var td = next.find('td:eq(' + index + ')'); 
     grid.closeCell(); 
     grid.current(td); 
     current = grid.current(); 
     grid.focus(current); 
     //current.focus(); 
     return; 
    } 

這是非常接近的工作。如果我在輸入之前處於導航模式,則全部仍然正常工作。但是,如果我在編輯模式(例如選項卡到一個單元格,然後按回車),它確實下降一個單元格,並回到導航模式,但我似乎沒有正確的重點。左右箭頭鍵不起作用,向上箭頭似乎顯示焦點在頁面上,而不是在網格內。

我嘗試過以各種方式調用焦點,但我無法讓它工作。任何想法我在這裏做錯了嗎?任何幫助將不勝感激!

在此先感謝

回答

2

您需要將焦點設置在表本身上,因爲網格的keydown事件處理程序綁定到表:

scope.$on("kendoRendered", function (e) { 
    var grid = scope.grid; 
    var elem = $(grid.table); 

    // attach keydown handler to the table 
    var newHandler = function (e) { 
     if (e.keyCode == 13) { // enter 
      var current = grid.current(); 
      var index = current.index(); 
      var next = $(current).closest('tr').next('tr'); 

      grid.closeCell(); 
      var td = next.find('td:eq(' + index + ')'); 

      grid.current(td); 
      $(td).closest("table").focus(); 
     } 
    }; 

    $(elem).on("keydown", newHandler); 
}); 

demo

+0

我只是想小小擴展這個,我認爲會是相同的 - 我想用箭頭鍵(我認爲會和輸入一樣),但由於某種原因,組合鍵首先處理鍵,所以在我們去之前新的單元格,組合值在這裏改變(http:// j sfiddle.net/peterjc/p6womgL9/2/)我已經處理了向下箭頭(也將向上箭頭)。有沒有辦法阻止這種情況發生的方向鍵(我想知道他們爲什麼不同於輸入)。乾杯 – peterc 2015-03-04 05:25:40

+0

你必須禁用小部件的鍵盤導航; http://jsfiddle.net/p6womgL9/4/ – 2015-03-04 12:14:15

相關問題