Jquery JQGrid上取消行选择的事件
我正在使用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');
$(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用户通常需要一些妥协。祝你好运