2012-05-09 3 views
2

Это был простой диалог, как показано ниже, его высота уменьшается при каждом перетаскивании диалогового окна. Его значение высоты даже изменяется, когда я устанавливаю параметр resizable = false. Наконец, я исправил его, изменив высоту диалогового окна перетаскивания в обработчике событий dragStop.Как исправить размер диалогового окна JQuery UI во время перетаскивания?

Обнаружена аналогичная проблема here, но это было с IE, и автор предложил не устанавливать значение высоты, что IMHO не подходит для всех случаев использования.

Я использую Chrome и JQuery UI 1.8.19

<p><a id="edit" href="#">Open Editor</a></p> 
<div id="editor"></div> 

$(document).ready(function() 
    { 
     $("#edit").on("click", function() 
     { 
       var $dialog = $("#editor") 
       .dialog(
       { 
        title: "HTML Editor", 
        modal: true, 
        autoOpen: false, 
        width: 600, 
        height: 350, 
        minWidth: 300, 
        minHeight: 200, 
        closeOnEscape: true, 
        resizable: false, 
        open: function() 
        { 
        }, 
        buttons: 
        { 
         "Save": function() 
         { 
          $(this).dialog("close"); 
         }, 
         "Cancel": function() 
         { 
          $(this).dialog("close"); 
         } 
        }, 
        dragStop: function (e, ui) 
        { 
         $(this).dialog("option", "height", "377px"); 
        } 
       }); 
      } 

      $dialog.dialog("open"); 
      return false; 
     }); 
    }); 

Update 1: Я только что создал новый проект (ASP.NET MVC 4) и обнаружил, что проблема возникла, когда я использовал следующее правило CSS, Зачем?

* 
{ 
    margin: 0; 
    padding: 0; 

    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ 
    -moz-box-sizing: border-box; /* Firefox, other Gecko */ 
    box-sizing: border-box;   /* Opera/IE 8+ */ 
} 
+0

Убедитесь, что вы проверить все места, где вы настраиваете высоту. У меня была аналогичная проблема несколько недель назад, и единственный способ, которым я мог обойти это, - очистить код. Проверьте все места, где вы устанавливаете высоту, и, возможно, комментируя и отлаживая, каждый может заставить вас понять, где действительно требуется настройка высоты. Занимает много времени, но приведет к созданию более чистого кода. – neuDev33

+0

Я столкнулся с проблемой другого размера с изменением размера jQuery UI вчера, кажется, что jQuery/UI всегда вычисляют ширину и высоту элементов ошибочно, если вы используете размер поля в рамке. Не так ли? –

ответ

1

JQuery 1,8, наконец, понять коробчатого проклейки тщательно, и мы больше не нужно тонкой настройки :)

Documentation

3

jQuery неправильно вычисляет размер диалогового окна при использовании размера поля: border-box (с шаблоном по умолчанию). Я установил на высоте диалоговой памяти в открытом событии и вручную установить диалог высоты в событиях dragStart/dragStop:

    dragStart: function (e, ui) 
        { 
         $(this).parent().height(height); 
        }, 
        dragStop: function (e, ui) 
        { 
         $(this).parent().height(height); 
        } 
2

я получил это фиксируется с помощью простых CSS:

.ui-dialog { 
       height:auto !important; 
      } 
+0

У меня была немного другая проблема, за которую я не нашел ответов. Мои диалоговые окна автоматически меняли размер, чтобы соответствовать его содержимому, за исключением того, что после его перетаскивания ширина и высота будут заблокированы. Этот стиль, похоже, исправил это. Однако я добавил также 'width: auto! Important;'. –

Смежные вопросы