如何为 jquery ui 对话框定义两种不同的关闭行为?

发布于 2024-10-21 19:17:21 字数 275 浏览 8 评论 0原文

我正在使用 jquery 对话框,我必须创建一个“确定”按钮来关闭当前对话框。我设法通过以下选项做到这一点:

buttons: {"OK": function() { $(this).dialog("close");  }}

到目前为止,一切都很好。

问题是,原来的关闭按钮(位于右上角)不应再关闭对话框,而是询问您是否要清理对话框内的表单元素(并调用一个函数来执行此操作);我不能为此使用“beforeClose”,因为它也会影响“确定”按钮的行为。

I'm using jquery dialogs and I had to make a "ok" button which close the current dialog. I managed to do so with the option :

buttons: {"OK": function() { $(this).dialog("close");  }}

So far, so good.

The problem is, the original close button (at the top right corner) shouldn't close the dialog anymore, but ask you if you want to clean the form elements inside the dialog instead (and call a function to do so); and I can't use "beforeClose" for this because it would affect the ok button's behavior too.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧街凉风 2024-10-28 19:17:21

我不知道是否可以捕获关闭按钮被单击的情况(我找不到任何东西,而且我以前从未这样做过)。但是,另一种选择是完全隐藏关闭按钮并自行向用户提供按钮。像这样的东西...

$("#dialog-message").dialog({
    modal: true,
    buttons: {
        OK: function() {
            $(this).dialog("close");
        },
        Close: function() {
            // Do stuff...
        }
    },
    beforeClose: function(event, ui) {},
    closeOnEscape: false,
    open: function(event, ui) {
        // This hides the close button.
        $(this).parent().children().children('.ui-dialog-titlebar-close').hide();
    }
});

I don't know if it's possible to capture that the close button was clicked or not (I wasn't able to find anything and I have never had to do it before). However, another alternative is to hide the close button completely and provide buttons to the user on your own. Something like this...

$("#dialog-message").dialog({
    modal: true,
    buttons: {
        OK: function() {
            $(this).dialog("close");
        },
        Close: function() {
            // Do stuff...
        }
    },
    beforeClose: function(event, ui) {},
    closeOnEscape: false,
    open: function(event, ui) {
        // This hides the close button.
        $(this).parent().children().children('.ui-dialog-titlebar-close').hide();
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文