Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery ui对话框上动态选择关闭效果_Javascript_Jquery_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

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" );
        }
    }
});
我有两个语义不同的密切动作:

  • 成功后关闭-在这种情况下,我想慢慢淡出对话框(我还显示了一个绿色的V形图标,上面的代码片段中没有显示)
  • 取消后关闭-我想立即使对话框消失,淡入淡出效果不适合这里
  • 上面的代码在这两种情况下都使用了
    .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键时更改隐藏选项