这是一个有趣的问题。 onClose
如果点击叠加层(如果点击了模式对话框),回调将不会被调用,对话框将被关闭。
这很有趣,但jqModal.js
已经有了完美的选项来实现你的requiremens。它的closeoverlay
选项$.fn.jqm
(见the line)。问题是jqGrid没有任何允许设置选项的公共属性。如果你只是修改jquery.jqGrid.src.js
closeoverlay : true
到closeoverlay : false
(它对应closeoverlay:!0
更改为closeoverlay:!1
jquery.jqGrid.min.js
),那么你将有你需要的行为。
问题是,我没有看到任何简单的方法来实现您的要求,而无需修改代码jqGrid。
修订:我分析的jqModal.js
模块一次代码和心中已经发现简单的方式不改变的jqGrid的源代码。分析很困难,因为模块只能以最小化的形式存在。所以很难阅读代码。
解决办法:你应该包括以下行这改变jqModal.js
模块的默认设置:
$.jqm.params.closeoverlay = false;
说明:jqModal.js
的the lines模块初始化$.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对话框。
是的,这不是一个简单的方法来做到这一点。另外,我想向jqGrid开发人员推荐它。我会检查你的建议。 – DaGLiMiOuX 2013-05-06 07:19:05
非常感谢你!它有效,但我认为他们应该做一个简单的方法来做到这一点,例如一个新的属性。如果你认为向开发者建议是个好主意,那么我会向他们提出建议。也想道歉,不要在我之前发布的其他问题上解释。正如我所说,谢谢!^_^ – DaGLiMiOuX 2013-05-06 07:29:03
@DaGLiMiOuX:不客气!正如我写到在源代码中更改“closeoverlay”通常不是最好的方法,但它实际上是最简单的* *。我稍后会将相应的建议发布到trirand。问题是jqModal模块在jqGrid的代码中使用了很多次*内部*。所以在jqGrid方法中公开这个选项将会改变许多jqGrid代码行。人们只需要将下面的选项转发给jqModal模块。 – Oleg 2013-05-06 07:36:05