Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery JQGrid上取消行选择的事件_Jquery_Jquery Ui_Jqgrid - Fatal编程技术网

Jquery JQGrid上取消行选择的事件

Jquery JQGrid上取消行选择的事件,jquery,jquery-ui,jqgrid,Jquery,Jquery Ui,Jqgrid,我正在使用JQGrid,并定义了一个“添加新”按钮 $(gridId).jqGrid('navButtonAdd', pagerId, { caption: "Add Record", buttonicon: "ui-icon-add", onClickButton: function (id) { var newId = -1; $('#addButton').addClass('ui-state-disabled');

我正在使用JQGrid,并定义了一个“添加新”按钮

$(gridId).jqGrid('navButtonAdd', pagerId, {
    caption: "Add Record",
    buttonicon: "ui-icon-add",
    onClickButton: function (id) {
        var newId = -1;
        $('#addButton').addClass('ui-state-disabled');
        var datarow = { Id: newId, 'Active': true, 'Location': '', 'LabCode': '', 'Crops': '', 'LabManager': '', 'MarkerChoice': '', 'AllowPlates': '', 'AllowTape': '' };
        var su = jQuery(gridId).jqGrid('addRowData', newId, datarow, "last");
        if (su) {
            $(gridId).jqGrid('setSelection', newId);
        }
    },
    position: "last",
    id: "addButton"
});
如您所见,当单击按钮时,它将禁用,因此无法再次单击。我的问题是,当用户单击“添加”,然后单击esc时,我需要重新启用“添加”按钮:

$('#addButton').removeClass('ui-state-disabled');

但我不知道该在哪里做?是否有行取消选择事件或等效事件可供我使用?

onsetrow
方法。您可以捕获所选行,如果它更改或为-1,您可以调用
removeClass()
code

var lastSel;
jQuery("#gridid").jqGrid({
...
   onSelectRow: function(id){ 
      if(id && id!==lastSel){ 
         ... 
         lastSel=id; 
      } 
   },
...
});
编辑:要捕获ESC键,请执行以下操作:

/* could use window or a specific element if required */
$(window).keydown(function(e) {   // or keyup, keypress
        if (e.keyCode == '27') {  // ESC
            e.preventDefault();
            // do something with the grid
        }
});

不幸的是,按下esc键时OnSetrow没有启动。误读了你的问题,没有意识到你只想在按下esc键时做些事情。请参阅我的答案编辑以获得可能的解决方案。在阅读您的答案之前,我发现了同样的问题。看起来有点像黑客,但它是有效的!非常感谢。不幸的是,任何自定义键导航总是看起来很糟糕。我不惜一切代价试图避免它,但将基于DOS的用户转换为web用户通常需要一些妥协。祝你好运