JQGRID - JQMODAL:单击叠加时禁用关闭模式

时间:2013-05-03 16:36:19

标签: javascript jquery jqgrid jqmodal

我正在尝试在单击编辑表单模式后面的叠加时禁用单击关闭,当我编辑行时打开,但我不知道如何执行此操作。我正在尝试这样的事情:

editOptions: {
    url: 'foo/edit.html',
    mtype: 'PUT',

    //some other options
    closeAfterEdit: true,
    reloadAfterSubmit: true,
    onClose: function() {
        alert('Hi ^_^');
    }
}

但是,如果我点击'X'按钮,这只会触发。如果我点击叠加(超出模态),它会关闭模态并且该警报永远不会触发。我想要的是当我单击模态或删除该叠加时禁用该关闭功能。

感谢。

1 个答案:

答案 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 linesjqModal.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对话框。