Olá
Tenho um grid e depois de editar uma célula, quero que saia do foco ao apertar a tecla enter. Está fazendo isso, só
que não está caindo dentro da função onEnter, até coloquei um alert. Se alguém puder ajudar, fico agradecido. Segue o código:
function carregarGrid(p_cabecalho, p_descritor, p_dados){
var grid = $("#datagrid"), lastSel = -1, editingRowId = -1;
jQuery("#datagrid").jqGrid({data: p_dados,
datatype: "local",
colNames: p_cabecalho,
colModel: p_descritor,
rowNum: 10,
rowList: [10,30,50,100],
pager: '#pdatagrid',
gridview:true,
rownumbers:true,
recordpos: 'right',
viewrecords: true,
height: '160',
width: '470',
editurl: 'clientArray',
onSelectRow: function(rowid) {
if (rowid && rowid !== lastSel) {
grid.jqGrid('restoreRow',lastSel);
lastSel = rowid;
}
},
ondblClickRow: function(rowid) {
editingRowId = rowid;
grid.jqGrid('editRow',rowid,true,null, null, null, {},function(){
setTimeout(function(){
grid.focus();
},100);
});
return;
}
});
grid.jqGrid('gridResize', { minWidth: 450, minHeight: 150 });
grid.jqGrid('bindKeys', {
onEnter: function(rowid) {
alert('oiii');
editingRowId = rowid;
grid.jqGrid('editRow',rowid,true,null, null, null, {},function(){
setTimeout(function(){
grid.focus();
},100);
});
}
});
grid.jqGrid('setSelection',"1");
grid.focus();
var originalCheckValues = $.jgrid.checkValues,
originalHideModal = $.jgrid.hideModal,
error_td_input_selector;
$.jgrid.checkValues = function(val, valref,g, customobject, nam) {
var tr,td,
ret = originalCheckValues.call(this,val, valref,g, customobject, nam);
if (!ret[0]) {
tr = $("tr#"+editingRowId);
tr.children("td:nth-child("+(valref+1)+")");
tr.find("td input").removeClass("ui-state-error");
error_td_input_selector = "tr#"+editingRowId+" > td:nth-child("+(valref+1)+") > input:first";
td = tr.children("td:nth-child("+(valref+1)+")");
td.find("input").addClass("ui-state-error");
}
return ret;
};
$.jgrid.hideModal = function (selector,o) {
var input, oldOnClose;
if (error_td_input_selector) {
input = $(error_td_input_selector);
if (input.length > 0) {
oldOnClose = o.onClose;
o.onClose = function(s) {
if ($.isFunction(oldOnClose)) {
oldOnClose.call(s);
}
setTimeout(function(){
input.focus();
},100);
};
}
}
originalHideModal.call(this,selector,o);
};
Att.
Marcos Santiago