【问题标题】:JQGRID - JQMODAL: Disable close modal when click on overlayJQGRID - JQMODAL:单击覆盖时禁用关闭模式
【发布时间】:2013-05-03 16:36:18
【问题描述】:

单击编辑行时打开的编辑表单模态后面的叠加层时,我试图禁用单击时关闭,但我不知道该怎么做。我正在尝试类似的东西:

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

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

但这只有在我点击'X' 按钮时才会触发。如果我点击覆盖(模式外),它会关闭模式并且该警报永远不会触发。我想要的是当我点击模式或删除该覆盖时禁用该关闭功能。

谢谢。

【问题讨论】:

    标签: javascript jquery jqgrid jqmodal


    【解决方案1】:

    这是一个有趣的问题。 onClose如果点击覆盖(如果点击退出模态对话框)将不会调用回调并且对话框将被关闭。

    这很有趣,但jqModal.js 已经有一个选项可以完美地实现您的要求。这是$.fn.jqmcloseoverlay 选项(参见the line)。问题是 jqGrid 没有任何允许设置选项的公共属性。如果您只是将jquery.jqGrid.src.jscloseoverlay : 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 对话框。

    【讨论】:

    • 是的,这不是一个简单的方法。另外,我想把它推荐给 jqGrid 开发人员。我会检查你的建议。
    • 非常感谢!!它有效,但我认为他们应该做一个简单的方法来做到这一点,例如一个新的财产。如果您认为向开发人员建议是个好主意,我会建议他们这样做。也很抱歉没有解释我之前发布的其他问题。正如我所说,谢谢! ^_^
    • @DaGLiMiOuX:不客气!正如我在源代码中写的那样更改closeoverlay 通常不是最好的方法,但它确实是在这种情况下 中最简单的方法。稍后我会将相应的建议发布到 trirand。问题是 jqModal 模块在 jqGrid 的代码中内部多次使用。因此,在 jqGrid 方法中公开选项将跟随 jqGrid 代码的多行更改。只需将下面的选项转发到 jqModal 模块。
    • @DaGLiMiOuX:我找到了解决问题的更好方法:请参阅我的回答的更新部分。
    • 再次感谢!因此,如果我想禁用该特定页面中的覆盖而不是更改我的源并让它禁用任何其他页面的覆盖,我必须在创建 jqGrid 的任何 JS 中添加该行?这条线实现起来并不难,已经用$.extend...做了一些修改,但仍然认为应该有更好更直观的方式。
    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多