Giridharan_BE Ответов: 1

Перетаскивание из localstorage HTML5 не работает


I have created a web page with drag and drop features for some of the elements.

Once the drag and drop are done, I store the elements which are in the droppable area in the local storage of the browser.

Later when the page is accessed again, I take the values from local storage and restore them on the web page.

After I restore, I couldn't drag the elements in the droppable area within its containment. Could anyone please help? Below is the code I have used.


Вот ссылка на скрипку моей работы:

ИГРАТЬ НА СКРИПКЕ

Что я уже пробовал:

JS:

$(function () {
        if (localStorage.length != 0) {
            for (var i = 0; i < localStorage.length; i++) {
                var dropClass = localStorage.key(i);
                var clonediv = $("." + dropClass.substr(4, dropClass.length - 4)).clone();
                $("#droppable").append(clonediv.draggable({ containment: "#droppable", grid: [30, 30] }).resizable({ containment: "#droppable" }));
                console.log(clonediv);
            }
        }
        else { }

        $(".bat_voltage").draggable({ helper: 'clone', snap: true, grid: [30,30] });
        $(".left_flight").draggable({ helper: 'clone', snap: true, grid: [30, 30] });
        $(".cnt_flight").draggable({ helper: 'clone', snap: true, grid: [30, 30] });
        $("#droppable").droppable({
            drop: function (event, ui) {
                var dragged = ui.draggable;
                var id = dragged.attr("class").split(' ');
                var droppable = $("#droppable");
                var find = (droppable.find("." + id[0]));
                console.log(find);
                if (find.length != 0) { }
                else {
                    localStorage.setItem("drop" + id[0], droppable);

                    ui.helper.css({ 'top': 0, 'left': 0, 'position': 'relative', 'margin': '0px auto', 'padding': '0.5em', 'z-index': 0 });
                    ui.helper.clone().appendTo("#droppable").draggable({ snap: true, grid: [30, 30] }).resizable({ containment: "#droppable" });
                }
            }
        });
      });



CSS:

.bat_voltage { ширина: шириной 250 пикселей и следующий; высота: 100 пикселей; обивка: 0.5 ем; маржа: 10 ПКС 10 ПКС значение 10px 0; z-индекса:1; }
.floatleft { поплавок:слева; }
.left_flight { ширина: шириной 250 пикселей и следующий; высота: 100 пикселей; обивка: 0.5 ем; маржа: 10 ПКС 10 ПКС значение 10px 0; z-индекса:1; }
.cnt_flight { ширина: шириной 250 пикселей и следующий; высота: 100 пикселей; обивка: 0.5 ем; маржа: 10 ПКС 10 ПКС значение 10px 0; z-индекса:1; }
#десантирования { ширина: 50%; высота: 400 пикселей; обивка: 0.5 ем; маржа: значение 10px; размер:оба; границы: 2 пикселя; переполнение:авто; }

HTML:

<div>
    <div>
    <div class="bat_voltage floatleft ui-widget-content" >
      <p>Battery Voltage</p>
    </div>

    <div class="left_flight floatleft ui-widget-content" >
      <p>Flight Time Left</p>
    </div>

    <div class="cnt_flight floatleft ui-widget-content" >
      <p>Current Flight Time</p>
        <div class="curFlight"></div>
    </div>
    <div style="clear:both"></div>
   </div>
    <div id="droppable" class="ui-widget-header">
      <p>Drop here</p>
    </div>

</div>

ZurdoDev

Отладьте свой код. После загрузки из localStorage вызывается ли перетаскиваемый метод для элементов?

Giridharan_BE

Я могу перетащить после восстановления из localstorage. Но не может упасть и в другом месте в пределах его сдерживания.

ZurdoDev

Убедитесь, что droppable подключается правильно.

Giridharan_BE

Извиняюсь. Что вы имеете в виду, подключившись должным образом? Не могли бы Вы уточнить?

ZurdoDev

Проверьте $("#droppable").length (), чтобы убедиться, что это > 0.

Giridharan_BE

Я только что проверил $("#droppable").длина(). Это 1.

ZurdoDev

Это означает, что у вас есть один предмет, на который можно упасть. Вам придется отладить его и выяснить, что происходит. Мы не можем запустить ваш код, поэтому я не уверен, что мы можем сделать для вас.

Giridharan_BE

Я могу перетащить виджеты, восстановленные из локального хранилища. Но я не мог упасть вместе с защитной оболочкой. Он просто возвращается к тому месту, откуда его вытащили.

Giridharan_BE

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

ZurdoDev

скрипка ссылка дает 404.

Giridharan_BE

Извините, что я не сделал свою скрипку публичной. Теперь я знал. Пожалуйста, проверьте

1 Ответов

Рейтинг:
4

Giridharan_BE

It must be somehow caused by the element not being dragged into the droppable area, making the revert parameter active because of this. Not sure how to solve this better than by just disabling it for the elements present inside it at the start:



$('#droppable. ui-draggable').перетаскивать( "параметр", "вернуться", ложные );


ИГРАТЬ НА СКРИПКЕ[^]