Проблема в перетаскивании кода jquery на динамические элементы - PullRequest
0 голосов
/ 03 декабря 2018

У меня html как

       <textarea name="comment_description" rows="10" id="comment_description"  class="validate-required form-control"></textarea>

         <div class="col-sm-2">
             <b>Merge Fields</b>
              <div id="dragdiv">
                 <div id="allItems">

                 </div>
              </div>
         </div>

Сначала я пытаюсь динамически заполнить все элементы, используя строки кода ниже

   function fetchMergeFields() {
        $.ajax({
            url: './?secController=CommentTemplate&action=fetchMergeFields',
            type: 'POST',
            dataType: 'JSON',
            success: function (data) {
                var NoOfItems = data[0]["items"].length;
                   for (var i =0; i < NoOfItems; i++) {
                            $("#allItems").append('<span id=node'+i+'>' + data[0]["items"][i]["name"] + '</span><br>');
                     }
                 }
             });
          }

В браузере элементы отображаются как

           <div id="allItems">
                 <span id="node0">[Student Name]</span><br>
                 <span id="node1">[SSN]</span><br>
                 <span id="node2">[Date.Of.Birth]
                 ... 
            </div>

Я использую перетаскивание jquery из этой библиотеки http://www.authorcode.com/drag-and-drop-li-elements-into-textbox/, чтобы пользователь мог добавлять элемент из allItems div в текстовую область путем перетаскивания.

Я реализовалниже строки кода для перетаскивания.

      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

     <script src="http://code.jquery.com/ui/1.8.20/jquery-ui.min.js" type="text/javascript"></script>
  <script type="text/javascript">

   fetchMergeFields();

    $(document).ready(function () {

        $(":input.validate-required").on('change', function () {
            $(this).closest(".form-group").removeClass("has-error");
            $(this).next('small').addClass('hide');
        });

        $(":input.validate-required").on('keyup', function () {
            $(this).closest(".form-group").removeClass("has-error");
            $(this).next('small').addClass('hide');
        });

        var jq = $.noConflict();

        jq("#dragdiv span").draggable({
            appendTo: "body",
            helper: "clone",
            cursor: "move",
            revert: "invalid"
        });

        initDroppable(jq("#comment_description"));
        function initDroppable($elements) {
            $elements.droppable({
                over: function(event, ui) {
                    var $this = jq(this);
                },
                drop: function(event, ui) {
                    var $this = jq(this);
                    if ($this.val() == '') {
                        $this.val(ui.draggable.text());
                    } else {
                        $this.val($this.val() + " " + ui.draggable.text());
                    }
                }
            });
        }

    });

 </script>

Теперь проблема в том, что приведенный выше код перетаскивания иногда работает, но в большинстве случаев он не работает.Затем я попытался добавить элементы непосредственно в allItems внутри файла кода html-страницы, т.е. без вызова функции fetchMergeFields ().Работает нормально.Я не могу отследить актуальную проблему.Пожалуйста, помогите !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...