我正在尝试在单击编辑表单模式后面的叠加时禁用单击关闭,当我编辑行时打开,但我不知道如何执行此操作。我正在尝试这样的事情:
editOptions: {
url: 'foo/edit.html',
mtype: 'PUT',
//some other options
closeAfterEdit: true,
reloadAfterSubmit: true,
onClose: function() {
alert('Hi ^_^');
}
}
但是,如果我点击'X'
按钮,这只会触发。如果我点击叠加(超出模态),它会关闭模态并且该警报永远不会触发。我想要的是当我单击模态或删除该叠加时禁用该关闭功能。
感谢。
答案 0 :(得分:6)
这是一个有趣的问题。如果单击叠加层(如果单击模态对话框)并且对话框将关闭,则不会调用onClose
回调。
这很有趣,但jqModal.js
已经有了完美的选项来实现你的要求。它是closeoverlay
的{{1}}选项(请参阅the line)。问题是jqGrid没有任何允许设置选项的公共属性。如果您只是将$.fn.jqm
jquery.jqGrid.src.js
修改为closeoverlay : true
(它对应closeoverlay : false
中的closeoverlay:!0
更改为closeoverlay:!1
),那么您将拥有以下行为你需要。
问题是我没有看到任何简单的方法来实现你的要求而不修改代码jqGrid。
更新:我再次分析了jquery.jqGrid.min.js
模块的代码,我找到了简单的方式,而没有更改jqGrid的源代码。分析很困难,因为模块仅以最小化的形式存在。因此很难阅读代码。
解决方案:您应该包含以下更改jqModal.js
模块默认值的行:
jqModal.js
说明:$.jqm.params.closeoverlay = false;
模块the lines将jqModal.js
初始化为
$.jqm
所以在你包含$.jqm = {
hash: {},
open: function (s,t) { ... },
close: function (s) { ... },
params: {}
};
之后的任何地方都有jquery.jqGrid.min.js
作为空对象。它可用于提供$.jqm.params
参数的默认值(这些参数未在jqModal.js
的参数列表中直接指定)。因此,您可以在$.jqm
(或$.jqm.params.closeoverlay = false;
)之后的某处包含jquery.jqGrid.min.js
,以便在点击叠加层时拒绝关闭jqGrid对话框。