【问题标题】:How to specify actions for auxiliary buttons in AlertifyJS?如何为 AlertifyJS 中的辅助按钮指定操作?
【发布时间】:2015-03-06 17:15:21
【问题描述】:

AlertifyJS 有一个放置辅助按钮的地方。

我希望在点击我的辅助按钮时发生两件事

  1. 对话框不应关闭
  2. 应该运行一些函数

这两件事我该怎么做?

我可以通过将通知作为第三个参数传递来显示通知,但对话框消失了。此外,如果我有多个辅助按钮和每个不同的功能,这将不起作用。

下面是我的 javascript 和 here is a JSFiddle



    // Run this function when the auxiliary button is clicked
    // And do not close the dialog
    var helpInfo = function () {
        alertify.notify("help help help");
    };

    var custom = function () {
        if (!alertify.helper) {
            alertify.dialog('helper', function factory() {
                return {
                    setup: function () {
                        return {
                            buttons: [{
                                text: 'Help',
                                scope: 'auxiliary'
                            }],
                            options: {
                                modal: false
                            }
                        };
                    }
                };
            }, false, 'alert');
        }
        alertify.helper('Do you need help?', "hello world", helpInfo);
    };

    custom();

【问题讨论】:

    标签: alertifyjs


    【解决方案1】:

    AlertifyJS 回调将被传递一个特殊的 closeEvent 对象。要使对话框保持打开状态,您的回调应将 cancel 属性设置为 true 或只是 return false

    var helpInfo = function (closeEvent) {    
       alertify.notify("help help help");    
       closeEvent.cancel = true;
      //or
      //return false;
    };
    

    Updated Fiddle

    【讨论】:

    • 我实际上只是想通了这一点,并准备输入回复。我自己更新了小提琴,发现它把 /2/ 放在了 URL 中,所以我尝试了 /1/ 并看到了你的。所以我想我会等到你发布答案。 :)
    • 如果我有多个辅助按钮,它们每个都有不同的回调,还是我必须有一个回调来确定单击了哪个按钮?
    • 由于您的对话框基于alert,因此您有一个回调,它将为您的所有按钮调用。见github.com/MohammadYounes/AlertifyJS/blob/master/src/js/…
    • closeEvent 还提供另外两个属性indexbutton 参见alertifyjs.com/factory.html
    • 如果你想创建一种带有单独回调的新型对话框,请查看提示对话框github.com/MohammadYounes/AlertifyJS/blob/master/src/js/…
    【解决方案2】:

    helpInfo 函数添加一个附加参数,以便您可以访问与事件一起传递的事件对象。现在您可以阻止它的默认操作(这将关闭对话框)。

    var helpInfo = function (e) {
        alertify.notify("help help help");
        e.preventDefault();
    };
    

    【讨论】:

    • 执行此操作时检查控制台。它引发错误“未定义不是函数(评估'e.preventDefault()')”。你是对的,对话不会消失,但不是你想的那样:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多