gpt4 book ai didi

javascript - Alertify 对话框在确认前消失

转载 作者:行者123 更新时间:2023-11-30 00:33:27 28 4
gpt4 key购买 nike

我刚刚写了一些代码,遇到了这样的问题:

alertify.dialog("confirm").set(
{
'labels':
{
ok: 'Personal',
cancel: 'Share'
},
'message': 'Select target:',
'onok': function()
{
alertify.confirm($("#dir_select_user").get(0), function()
{
var i = $("#dir_select_user .dir_selector").val();
t.find(".move_des").val(i);
t.find(".move_verify").val("1");
t.submit();
}).set('labels',
{
ok: alertify.defaults.glossary.ok,
cancel: alertify.defaults.glossary.cancel
});
},
'oncancel': function()
{
alertify.confirm($("#dir_select_share").get(0), function()
{
var i = $("#dir_select_share .dir_selector").val();
t.find(".move_des").val(i);
t.find(".move_verify").val("1");
t.submit();
}).set('labels',
{
ok: alertify.defaults.glossary.ok,
cancel: alertify.defaults.glossary.cancel
});
}
}) }).show();

我使用来自 http://alertifyjs.comalertifyjs 库(不是来自 http://fabien-d.github.io/alertify.js/ )。

如果您尝试这段代码,您会发现在选择personalshare 后,“onok”和“oncancel”对话框很快消失。

这里有什么问题?我该如何解决?

最佳答案

问题的根源是您试图在关闭时再次显示相同的对话框。默认的 AlertifyJS 对话框都是单例的(始终是一个实例)。

你有 2 个解决方案:

  1. 延迟显示第二个确认,直到第一个确认实际关闭。

    alertify.confirm("confirm ? ", 
    function onOk() {
    //delay showing the confirm again
    //till the first confirm is actually closed.
    setTimeout(function () {
    alertify.confirm("confirm another time ?");
    }, 100);
    },
    function onCancel() {
    //no delay, this will fail to show!
    alertify.confirm("this will not be shown!");
    }
    );
  2. 创建您自己的 transient (多实例)确认,只需继承现有的即可。

    // transient (multi-instance)
    alertify.dialog('myConfirm', function factory(){ return {};},true,'confirm');
    alertify.myConfirm("confirm ? ", function(){
    alertify.myConfirm("confirm another time ?");
    });

    注意:对此要小心,因为每次调用 transient 对话框都会创建一个新实例,您可以保存对已启动实例的引用并重新使用它们!

查看演示 here .

关于javascript - Alertify 对话框在确认前消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278829/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com