这是一个有趣的问题。 onClose如果点击覆盖(如果点击退出模态对话框)将不会调用回调并且对话框将被关闭。
这很有趣,但jqModal.js 已经有一个选项可以完美地实现您的要求。这是$.fn.jqm 的closeoverlay 选项(参见the line)。问题是 jqGrid 没有任何允许设置选项的公共属性。如果您只是将jquery.jqGrid.src.js 将closeoverlay : true 修改为closeoverlay : false(它对应于将jquery.jqGrid.min.js 中的closeoverlay:!0 更改为closeoverlay:!1),那么您将拥有您需要的行为。
问题是我没有看到任何简单的方法可以在不修改代码 jqGrid 的情况下实现您的要求。
更新:我又分析了jqModal.js模块的代码,我发现了简单的方法不改变jqGrid的源代码。分析很困难,因为模块仅以最小化的形式存在。所以很难看懂代码。
解决方案:您应该包含以下行来更改 jqModal.js 模块的默认值:
$.jqm.params.closeoverlay = false;
说明:the lines of jqModal.js 模块将$.jqm 初始化为
$.jqm = {
hash: {},
open: function (s,t) { ... },
close: function (s) { ... },
params: {}
};
因此,在您包含 jquery.jqGrid.min.js 之后的任何地方,您都有 $.jqm.params 作为空对象。可以用来提供jqModal.js的参数的默认值($.jqm的参数列表中没有直接指定)。因此,您可以在jquery.jqGrid.min.js(或jquery.jqGrid.src.js)之后的某处包含$.jqm.params.closeoverlay = false;,以拒绝在单击覆盖时关闭jqGrid 对话框。