当JqGrid中的行处于内联编辑模式时,使用jquery选择器访问最后一个单元格(最后一行和最后一列)

当JqGrid中的行处于内联编辑模式时,使用jquery选择器访问最后一个单元格(最后一行和最后一列),jqgrid,Jqgrid,想要在jqGrid中最后一个单元格的tab键上添加keydown事件以添加新行。 当行处于内联模式时,请帮助我将keydown事件仅附加到网格的最后一个单元格。 这是获取最后一行的选择器 var lastRow = $('#grid>tbody>tr.jqgrow:last'); 如何指定最后一行的最后一列选择器 请建议是否可以像这样动态绑定事件 在哪个位置放置此绑定事件代码更好,如在loadComplete中 在loadcomplete上,您获得最后一行,然后在最后一列中添加一个

想要在jqGrid中最后一个单元格的tab键上添加keydown事件以添加新行。 当行处于内联模式时,请帮助我将keydown事件仅附加到网格的最后一个单元格。 这是获取最后一行的选择器

var lastRow = $('#grid>tbody>tr.jqgrow:last');
  • 如何指定最后一行的最后一列选择器
  • 请建议是否可以像这样动态绑定事件
  • 在哪个位置放置此绑定事件代码更好,如在loadComplete中

  • loadcomplete
    上,您获得最后一行,然后在最后一列中添加一个类。然后,您可以只向其中添加一个jQuery事件处理程序,以侦听tab键以触发addnewrecord函数

    大致概述您将如何做到这一点:

    获取行的Id:

    var rowIds = $(grid).jqGrid('getDataIDs').length;
    
    如果知道最后一个列名,则可以使用它,如果不知道,则可以获得
    colNames
    数组的长度

    var lastCol = $(grid).jqGrid('getGridParam', 'colNames').length;
    
    然后通过以下方式将类设置为最后一行的最后一列:

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

    从这里开始,您应该在最后一行的最后一列上有一个类,您只需绑定一个事件处理程序,然后再绑定add函数,等等。

    这就是我如何使用您的解决方案

    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');
    };
    

    谢谢马克提供了一个很好的解决方案。我的答案超出了你的建议,如何把它写下来?我是一个新的问题,张贴到StackOverflow你不能,如果你使用我的答案标记为正确的(并可能向上投票)。答案按Active/sorted/VotesI排序我试图为您的答案投票,但在投票选项卡中未找到任何内容(问题/答案)。如何投票?在左手边,你应该在这个答案上打一个复选标记,标记为正确。向上和向下的箭头表示您的投票方式,但您需要一定的代表级别才能这样做。