2012-10-03 112 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() {} 
});