2011-12-21 51 views

回答

1

從來沒有用jQuery UI做過很多工作。但是,這裏有一個解決你的問題,顯然我已經設置maxWidth爲50px,所以改變它!

$(document).ready(function(){ 

var myDialog = $("#myDialog").dialog({ 
    autoOpen: false, 
    maxWidth: "50px", 
    height: 'auto', 
}); 

$("#showDialog").click(function(){ 
    myDialog.dialog("open"); 
}); 

}); 
+0

對話框現在將使用預定的寬度,並沒有考慮它可以使用的最大寬度(= maxWidth)的優點。如果我使用數字單位,maxWidth將被完全忽略。 – 2011-12-21 13:42:10

+1

不確定爲什麼maxWidth不會設置。爲什麼不在你的CSS中爲#myDialog的樣式設置最大寬度? – BennyC 2011-12-21 13:58:00

+0

max-width完成了這項工作。它不像它那麼美,但它現在起作用。謝謝。 – 2012-03-18 08:21:22

0

難道你們就不能只是刪除了「寬度」和「高度」屬性? http://jsfiddle.net/Ve79f/

+0

在這種情況下,使用一個標準的寬度並且對話框不會自動擴展。如果你有一個長文本,對話框的寬度會很小,但它會有很大的高度。 – 2011-12-21 13:39:38

2

設置CSS最大寬度屬性將確實確保對話不超過寬度,但隨後出現的對話框行爲異常(溢出是不可靠的,調整大小手柄可以放錯了地方),因爲jQuery對你的設置一無所知。這是我的解決方案:

var maxWidth = 750; 
    var maxHeight = 600; 

    var popup = $("<div>" + content + "</div>") 
     .dialog({ 
      autoOpen: true, 
      title: title, 
      hide: { effect: 'drop', direction: "up" }, 
      height: 'auto', 
      width: 'auto', 
      maxHeight: maxHeight, 
      maxWidth: maxWidth, 
      modal: modal, 
      buttons: { 
       Ok: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

    var w = popup.dialog("widget").width(); 
    console.log("w=",w); 
    if (w > maxWidth) { 
     popup.dialog("option", "width", maxWidth) 
     popup.dialog("widget").width(maxWidth); 
    } 

    var h = popup.dialog("widget").height(); 
    console.log("h=",h); 
    if (h > maxHeight) { 
     popup.dialog("option", "height", maxHeight) 
     popup.dialog("widget").height(maxHeight); 
    } 

    w = popup.dialog("widget").width(); 
    console.log("w2=",w); 
    h = popup.dialog("widget").height(); 
    console.log("h2=",h); 
0

如果你想要一點「響應」,我建議這樣做。修復對話框的最大和最小尺寸,並根據窗口大小進行調整。

根據您的對話框更改最小值或最大值。根據這些限制,它可以縮放到窗口大小的50%。它的中心。

$(document).ready(function() { 

     var maxWidth = 500; 
     var maxHeight = 300; 
     var minWidth = 250; 
     var minHeight = 180; 

     function diagSize() { 
      var wid = $(window).width() * 0.50; 
      if (wid > maxWidth) { 
       wid = maxWidth; 
      } else if (wid < minWidth) { 
       wid = minWidth 
      } 
      var hei = $(window).height() * 0.50; 
      if (hei > maxHeight) { 
       hei = maxHeight; 
      } else if (hei < minHeight) { 
       hei = minHeight 
      } 
      $("#mydialog").dialog({height: hei, width: wid}); 
      $("#mydialog").dialog("option", "position", {my: "center", at: "center", of: window}); 
     } 

然後你的對話框:

var mydialog = $("#mydialog).dialog({ 
      autoOpen: false, 
      closeOnEscape: true, 
      modal: true, 
      resizable: false, 
      buttons: { 
       "<spring:message code="action.cancel"/>": function() { 
        $(this).dialog("close"); 
       }, 
       "<spring:message code="action.next"/>": function() { 
        $.post({ 
         url: '/myurl', 
         success: function(data) { 

         }, 
        }); 
       } 
      } 
     }); 

最後,調整您的對話框上的2例:調整窗口大小和開業前:

$(window).resize(diagSize); 

$("#btnopenmydialog").on('click', function() { 
    diagSize(); 
    mydialog.dialog("open"); 

閉幕的$(document)。就緒

}); 
相關問題