1

新しい行を追加するために、jqGrid の最後のセルのタブ キーを押したときに keydown イベントを追加したいと考えていました。行がインライン モードの場合、キーダウン イベントをグリッドの最後のセルにのみアタッチするのを手伝ってください。これは、lastrow を取得するためのセレクターです。

var lastRow = $('#grid>tbody>tr.jqgrow:last');
  1. 最後の行の最後の列セレクターを指定する方法。
  2. このようにイベントを動的にバインドすることが可能かどうかを提案してください。
  3. loadComplete のように、このバインド イベント コードを配置するのに適した場所はどれですか。
4

2 に答える 2

0

最後の行を取得しloadcompleteてから、最後の列にクラスを追加します。次に、これに jQuery イベント ハンドラーを追加して、タブ キーをリッスンし、新しいレコードの追加機能をトリガーすることができます。

その方法の大まかな概要は次のとおりです。

行の ID を取得します。

var rowIds = $(grid).jqGrid('getDataIDs').length;

最後の列名がわかっている場合はそれを使用できますが、そうでない場合はcolNames配列の長さを取得できます。

var lastCol = $(grid).jqGrid('getGridParam', 'colNames').length;

次に、次の方法でクラスを最後の行の最後の列に設定します。

$(grid).jqGrid('setCell', rowIds, lastCol, "", 'TabTriggerClass');

そこから、最後の行の最後の列にクラスを配置し、イベント ハンドラーをバインドしてから add 関数などをバインドします。

于 2013-03-15T12:51:49.937 に答える
0

これが私があなたのソリューションを使用している方法です

var bindEventToLastCell = function(){
    jQuery(".TabTriggerClass").on('keydown', function(e){
        if (e.which == 9 && jQuery(e.currentTarget).hasClass('TabTriggerClass')) {

            $(this).removeClass('TabTriggerClass');
            $(this).off(e);
            //Performing other actions
        }
    });
};

var addTabTriggerClassToLastCell = function(grid) {
    var lastRowId = jQuery('#' + jQuery(grid).attr('id') + '>tbody>tr.jqgrow:last').attr('id');
    var lastCol = getLastEditableColumnIndex(grid);
    grid.setCell(lastRowId, lastCol, "", 'TabTriggerClass');
};
于 2013-03-18T11:49:57.340 に答える