我正在使用info_dialog显示服务器错误消息。 当info_dialog被关闭时,我想触发一个函数。我试图用鼠标点击它,但它只在对话框已经关闭后触发
第一次鼠标点击:对话框关闭,但不会触发警报
第二次以及随后的每次鼠标点击:警告被触发。
我正在使用celledit。 任何人都知道如何在对话框关闭时触发一个功能? 谢谢你的帮助。
errorCell: function(serverresponse, status) {
$.jgrid.info_dialog(
$.jgrid.errors.errcap,
serverresponse.responseText,
$.jgrid.edit.bClose,
{ zIndex: 1500}
);
$(document).click(function() {
alert( "Handler for .click() called." );
});
}
答案 0 :(得分:0)
方法$.jgrid.info_dialog
支持onClose
回调,将在结束时调用。回调的返回值通知是否允许结束。试试代码
$.jgrid.info_dialog(
$.jgrid.errors.errcap,
serverresponse.responseText,
$.jgrid.edit.bClose,
{
zIndex: 1500,
onClose: function () {
alert("inside onClose");
return true; // allow closing
}
}
);
更新:要在对话框中点击鼠标 时抓住$.jgrid.info_dialog
的关闭,必须执行更复杂的操作。
var orgViewModal = $.jgrid.viewModal;
$.extend($.jgrid,{
viewModal: function (selector, options) {
if (options.onHide) {
options.orgOnHide = options.onHide;
options.onHide = function (h) {
alert("inside onHide");
return options.orgOnHide.call(this, h);
}
}
return orgViewModal.call (this, selector, options);
}
});
$.jgrid.info_dialog($.jgrid.errors.errcap, "Test message",$.jgrid.edit.bClose, {
zIndex: 1500,
onClose: function () {
alert("inside onClose");
return true; // allow closing
}
});
在代码的第一部分中,我使用$.jgrid.viewModal
方法的“子类化”(就像我在the answer,this one和其他一些方法中使用的那样)。所以我将所有调用转发给原始$.jgrid.viewModal
方法,但有一个例外。如果使用$.jgrid.viewModal
回调参数调用onHide
方法,则转发到原始$.jgrid.viewModal
方法修改后的回调实现。它允许关闭对话框。
更新2 :The demo显示实时方法。
或者(而不是子类化),您只需修改the lines
即可onHide: function(h) {
h.w.hide().remove();
if(h.o) { h.o.remove(); }
},
info_dialog
中jquery.jqGrid.src.js
的。如果定义了选项,则只需插入mopt.onClose
的附加调用。可能应该包含其他回调onClosed
,因为onClose
可以拒绝关闭,但onHide
内部调用的新回调无法执行此操作。