Javascript 在jquery ui对话框上动态选择关闭效果
我正在使用此对话框:Javascript 在jquery ui对话框上动态选择关闭效果,javascript,jquery,jquery-ui,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Jquery Ui Dialog,我正在使用此对话框: $("#myDialog").dialog({ hide: {effect: "fade", duration: 3000}, buttons: { Save: function() { $.post(someurl, function() { $("#myDialog").dialog( "close" ); }); }, Can
$("#myDialog").dialog({
hide: {effect: "fade", duration: 3000},
buttons: {
Save: function() {
$.post(someurl, function() {
$("#myDialog").dialog( "close" );
});
},
Cancel: function() {
$("#myDialog").dialog( "close" );
}
}
});
我有两个语义不同的密切动作:
.dialog(“close”)
,因此当然这两种情况都会得到相同的淡出效果
在第二种情况下实现即时关闭的最佳方法是什么,同时在第一种情况下保持缓慢的淡出
编辑:我还希望单击“退出”按钮与“取消”按钮具有完全相同的效果-即时淡出。最简单的方法是:
$("#myDialog").dialog({
hide: null,
buttons: {
Save: function() {
$("#myDialog").dialog("option", "hide", "fade").dialog("close");
},
Cancel: function() {
$("#myDialog").dialog("close");
}
},
close: function(e) {
$("#myDialog").dialog("option", "hide", null);
}
});
在这两种情况下,只需设置隐藏选项:
$("#myDialog").dialog({
buttons: {
Save: function() {
$("#myDialog").dialog("option", "hide", "fade").dialog("close");
},
Cancel: function() {
$("#myDialog").dialog("option", "hide", null).dialog("close");
}
},
beforeClose: function(event, ui) {
if (event.which === 27) {
$("#dialog").dialog("option", "hide", false);
}
}
});
对于您的“成功后关闭”案例,您可以发布
$('.ui dialog').fadeOut(5000)
这就是我如何使用上述方法:
$('input').keypress(function () {
if ($(this).val() === "") { //works on 1st char you type
$('.ui-dialog').fadeOut(5000);
}
});
此外,您还需要:
myDlg.dialog('close')。dialog('open') 嗯,我甚至不知道你可以在对话框创建后设置选项。我来试试,谢谢!单击“退出”将慢慢消失。有没有改变这种行为的想法?是的,我已经更新了我的答案。简单地说,将hide handler设置为false,并在单击“保存”按钮后更改为淡入淡出。有必要在关闭事件处理程序中将隐藏选项重置为false,这样,如果再次打开同一对话框,行为将与第一次打开时相同。顺便说一句,
hide:
的默认值为null
,而不是false
。是的,我知道-但我想null
可能更为惯用。如何使按ESCAPE键不产生淡出效果?您可以在关闭事件之前使用并在按下ESC键时更改隐藏选项