2009-10-19 66 views
1

我不想在屏幕上居中顯示對話框,所以我設置了框的頂部和左側座標。我將其定位,以便它出現在鏈接旁邊,並且在點擊之前最初不會打開。如何在屏幕上保留jQuery對話框?

$("#error").dialog({ 
    bgiframe: true, 
    autoOpen: false, 
    width: 'auto', 
    height: 'auto', 
    hide: 'slide', 
    show: 'clip' 
}); 

<div id="error" title="Error"> 
<div id="errorText">&nbsp;</div> 
</div> 

在這裏,我想在屏幕上顯示一條錯誤消息。例如,如果我處於頁面底部,我不希望用戶必須向下滾動才能看到對話框。同樣的事情,如果錯誤消息是在右側,我想要顯示它在單擊元素的左側。這是唯一的問題,因爲我有自動寬度和高度它似乎並沒有知道div的高度/寬度之前我顯示對話框;與$('#error')。height()或$('#error')。width()。

$("#errorText").html(request.responseText + '<p>(Esc or click to close)</p>'); 
var x = el.position().left + el.outerWidth(); 
var y = el.position().top - $(document).scrollTop(); 
var position = el.position(); 
var bottomOfDialog = position.top + heightOfTheDialog; 
if(bottomOfDialog > document.height) 
{ 
    y -= heightOfTheDialog; 
} 
var rightSideOfDialog = position.left + widthOfTheDialog; 
if(rightSideOfDialog > document.width) 
{ 
    x -= (widthOfTheDialog + el.outerWidth()); 
}    
$("#error").dialog('option', 'position', [x, y]).dialog('open'); 

我如何得到實際的對話框之前適當heightOfTheDialog和widthOfTheDialog被打開?或者我應該使用別的東西?

+0

我面臨同樣的問題...有沒有運氣? – 2009-11-26 12:55:55

+0

不幸的是沒有 – rball 2009-11-26 15:40:13

回答

4

如果您的目標是向用戶顯示一條消息,並讓他們不必滾動發現它 - 我相信這是基於您的描述的情況 - 您可能需要考慮使用jQuery BlockUI Plugin來告訴用戶錯誤信息。看看下面的演示:

http://malsup.com/jquery/block/#demos

我認爲低吼功能可能是一些你能一起工作。

這裏的主要好處是錯誤信息會出現在一個非常一致的位置,您不需要關心「違規」元素的確切位置,但可以 - 同時 - 放心,該錯誤消息將始終對用戶可見。

+0

最重要的是讓我點擊的鏈接旁邊的對話框。 BlockUI非常酷,與jGrowl和其他人一樣(我之前嘗試過BeautyTips會自動做到這一點),但是它的想法是,如果它在選定的項目旁邊彈出,它會更明顯。 – rball 2009-10-19 21:16:13

相關問題