Alertify 对话框在确认前消失
Alertify dialog disappeared before confirming
我刚刚写了一些代码,遇到了这样的问题:
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.com (not from http://fabien-d.github.io/alertify.js/ 中的 alertifyjs
库。
如果您尝试此代码,您会发现 'onok' 和 'oncancel' 对话框在选择 personal
或 share
后很快消失。
这里有什么问题?我该如何解决?
问题的根源是您试图在关闭时再次显示同一个对话框。默认的 AlertifyJS 对话框都是单例的(始终是一个实例)。
您有 2 个解决方案:
延迟显示第二个确认,直到第一个确认实际关闭。
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!");
}
);
创建自己的瞬态(多实例)确认,只需继承现有的即可。
// transient (multi-instance)
alertify.dialog('myConfirm', function factory(){ return {};},true,'confirm');
alertify.myConfirm("confirm ? ", function(){
alertify.myConfirm("confirm another time ?");
});
注意:注意这一点,因为每次调用临时对话框都会创建一个新实例,您可以保存对已启动实例的引用并重新使用它们!
查看演示 here。
我刚刚写了一些代码,遇到了这样的问题:
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.com (not from http://fabien-d.github.io/alertify.js/ 中的 alertifyjs
库。
如果您尝试此代码,您会发现 'onok' 和 'oncancel' 对话框在选择 personal
或 share
后很快消失。
这里有什么问题?我该如何解决?
问题的根源是您试图在关闭时再次显示同一个对话框。默认的 AlertifyJS 对话框都是单例的(始终是一个实例)。
您有 2 个解决方案:
延迟显示第二个确认,直到第一个确认实际关闭。
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!"); } );
创建自己的瞬态(多实例)确认,只需继承现有的即可。
// transient (multi-instance) alertify.dialog('myConfirm', function factory(){ return {};},true,'confirm'); alertify.myConfirm("confirm ? ", function(){ alertify.myConfirm("confirm another time ?"); });
注意:注意这一点,因为每次调用临时对话框都会创建一个新实例,您可以保存对已启动实例的引用并重新使用它们!
查看演示 here。