Проблема с диалоговым окном, использующим Jquery UI

#javascript #jquery #jquery-ui #flot

#javascript #jquery #jquery-пользовательский интерфейс #flot

Вопрос:

набрать и разместить — это два раздела, которые существуют в html-коде, вызывающем функцию. Я могу открыть их оба, но не могу встроить график с помощью plot в раздел ‘place’ после его открытия с помощью кнопки ‘Draw’. Это работает нормально, только когда я открываю оба окна изначально.

 function abcd (dial,place,xrange){

var dial = conv(dial)

var xr = document.getElementById("xrange");

var yr = document.getElementById("yrange");

var gtype = document.getElementById("pattern");

xr.value = ""; yr.value = ""; gtype.value = "Line" ;

var place = conv(place);

$(dial).dialog("close");

$(dial).dialog("open");

$(place).dialog({
            autoOpen: false,
            show: 'Explode',
            height: 500,
            width: 450,
            modal: true})

$(dial).dialog({
            autoOpen: false,
            show: 'Explode',
            height: 300,
            width: 350,
            modal: false,
            buttons :
                        { "Draw" : function() {
                        $((place)).dialog("open");


            $(function () {

//manipulate input values to plot data

    $.plot(document.getElementById(plac2), [ {data:d1roe,label:"abc"},
                                 {data:d1roa, label:"xyz"} ], {
                  series: {stack: 0},
                  xaxis: {ticks: ticks},
                  ticks: ticks
               });


});

//function open(xyz) {$(xyz).dialog("open");}

function conv (myid) { 
return ( '#'   myid );
 }
  

Комментарии:

1. Можете ли вы отформатировать свой код!! Кажется, не хватает некоторых ;

2. Это единственное место, где вы инициализируете jquery dialog в элементах place и dial? потому что вы можете попытаться закрыть или открыть, но в первый раз это будет сделано с параметрами по умолчанию … после этого они откроются с выбранными вами параметрами

Ответ №1:

Я нашел быстрое решение для этого. Проблема заключалась в том, что диалоговое окно откроется, но не будет обрабатываться flot, поскольку ему не удалось извлечь ширину и высоту диалогового окна. Итак, перед открытием диалога мы можем исправить высоту и ширину.

Указание высоты в таблице стилей html в моем случае не сработало.

  $(dial).dialog({
        autoOpen: false,
        show: 'Explode',
        height: 300,
        width: 350,
        modal: false,
        buttons :
                    { "Draw" : function() {
                     $(place).width(500);    // can take this as an input as well
                     $(place).height(500);
                     $(place).dialog("open");
                     //ploting code
}})}
  

Ответ №2:

Главное, что вам нужно для работы flot, — это чтобы ваш div plac2 имел ширину и высоту и был видимым (т. Е. нарисованным на экране). Поэтому, прежде чем создавать график, попробуйте указать, имеет ли ваш div ширину и высоту:

 var placeholder = document.getElementById(plac2);
alert($(placeholder).width() ',' $(placeholder).height());

//plotting code here
  

Дайте нам знать, что произойдет.

Комментарии:

1. Он показывает 0,0. Но я инициализировал, когда определял разделение, а также в приведенном выше коде.$(place).dialog({ AutoOpen: false, show: ‘Explode’, height: 500, width: 450,}) кстати, plac2 — это только место

2. Убедитесь, что в plac2 есть CSS visibility: visible и display:block, прежде чем выводить график, это может помочь.

3. Я тоже это сделал. Ничего не изменилось. Я смог получить диалоговое окно, когда вручную установил его высоту и ширину. Большое спасибо.

4. @Rohan, напишите ответ на свой собственный вопрос, и я бы проголосовал за вас!