jQuery对话框单击外部关闭导致对话框重新打开

时间:2018-01-26 18:29:33

标签: jquery-ui jquery-ui-dialog

在文本框的焦点上,我使用jQuery显示模式对话框。关闭对话框后,焦点将返回到文本框,然后再次显示对话框。有可能阻止这种情况发生吗?

在我试过的对话框的附近功能中......

event.stopPropagation();
event.preventDefault();
event.stopImmediatePropagation();
event.returnValue = false;

...但这些不起作用,因为它们会停止关闭对话框的事件,而不是作为新事件的焦点事件。

这似乎是IE唯一的问题 - 它不会发生在chrome和edge中,因为它们不会将焦点返回到原始输入控件。有什么想法吗?

$ctl.focus(function (e) {
    var $popup = jQuery("<div><input type=\"text\"></input></div>");
    $popup.dialog({
            title: 'test',
            closeOnEscape: true,
            position: {
                of: $ctl,
                my: "left top",
                at: "left bottom"
            },
            open: function (event, ui) {               

                //Close the dialog when clicking outside (on the modal overlay) - requires the dialog to be in modal format
                jQuery(".ui-widget-overlay").click(function () {
                    $popup.dialog("close");

                    event.stopPropagation();
                    event.preventDefault();
                    event.stopImmediatePropagation();

                    event.returnValue = false;
                });

            },
            close: function (event, ui) {
                jQuery(this).dialog("destroy").remove();
            },
            minHeight: 10,
            minWidth: 10,
            modal:true
        });
});

1 个答案:

答案 0 :(得分:0)

我目前无法立即访问IE,但我认为删除焦点应该有效。

$(event.target).blur();