2012-10-03 79 views
0

我有一个模式对话框的应用程序。当我点击叠加时,这些对话框会自动关闭。我想阻止这种行为,只有当我点击一个可以正常工作的特定按钮时,它们才会关闭。我怎样才能管理这个?jquery防止关闭对话框时,点击覆盖

将覆盖在下面的DIV自动创建:

<div class="ui-widget-overlay" 
style="height: 100%; width: 100%; position: fixed; 
left: 0px; top: 0px; z-index: 2001; opacity: 0.3;"> 
</div> 

感谢

+0

你可以创建一个小提琴? – Cristy

回答

0

如何:

$('.ui-widget-overlay').click(function(e) { 
    e.preventDefault(); 
    return false; 
}); 

如果失败了,也许尝试:

window.onload = function() { 
    $('.ui-widget-overlay').off('click'); 
} 
+0

仅当选择器为 $('。ui-widget-overlay')而没有“div”时才会触发点击事件。 但是,这似乎不工作,我已经试图“防止默认” 感谢 – Franky

+0

和什么是实际关闭覆盖的代码?它是一个插件?你不能更新它只对关键事件作出反应吗? –

+0

我在修改一个使用jquery-ui和jqgrid的项目。正如我所说,事件被触发,但防止默认似乎不工作,因为模态对话框自动关闭。 – Franky

0

这里是解决方案:

$("#yourmodal").dialog({ 
 
    closeOnEscape: false, 
 
    /*This will disable keyboard*/ 
 
    resizable: false, 
 
    modal: true, 
 
    show: { 
 
    effect: "fade", 
 
    duration: 100 
 
    }, 
 
    open: function() { 
 
    $('.ui-widget-overlay').click(function(e) { 
 
     /*This will disable click and close*/ 
 
     e.preventDefault(); 
 
     return false; 
 
    }); 
 
    }, 
 
    close: function() {}, 
 
    position: { 
 
    my: "center", 
 
    at: "center", 
 
    collision: "fit" 
 
    } 
 
});

0
$("#yourmodal").dialog({ 
    closeOnEscape: false, 
    resizable: false, 
    modal: true, 
    open: function() { 
    $('.ui-widget-overlay').css('pointer-events', 'none') 
    }, 
    close: function() {} 
});