Пользовательский интерфейс JQuery, перетащите текст в позицию курсора внутри текстового редактора

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

var quill = new Quill('#editor', {
  theme: 'bubble'
});

$(function() {
  $("#allfields li").draggable({
    appendTo: "body",
    helper: "clone",
    cursor: "select",
    revert: "invalid"
  });
  initDroppable($("#TextArea1"));

  function initDroppable($elements) {
    $elements.droppable({
      hoverClass: "textarea",
      accept: ":not(.ui-sortable-helper)",
      drop: function(event, ui) {
        var $this = $(this);

        var tempid = ui.draggable.text();
        var dropText;
        dropText = tempid;

      }
    });
  }
});
.editor_container {
  width: 100%;
  margin: 50px 0 0 0;
  display: inline-block;
}

#editor {
  background-color: #002b36;
  color: #93a1a1;
  width: 45%;
  height: 400px;
  float: left;
}

#preview {
  width: 45%;
  height: 400px;
  float: left;
  padding: 10px;
  border: solid 1px #ccc;
  margin: 0 0 0 5%;
}

#allfields li:hover {
  cursor: pointer;
}
<link rel = "stylesheet" href = "//cdn.quilljs.com/1.3.6/quill.bubble.css">
<script src = "https://code.jquery.com/jquery-3.1.1.min.js"></script>
<link href = "https://cdn.quilljs.com/1.1.6/quill.snow.css" rel = "stylesheet">
<script src = "https://cdn.quilljs.com/1.1.6/quill.js"></script>

<!--jquery UI--->
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" type = "text/javascript"></script>
<script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js" type = "text/javascript"></script>

<div class = "editor_container">
  <div id = "editor">
    <h1>Dear {{name}},</h1>
    <p>
      This is to notify you that you have passed {{threshold_percent_Value}}% on your {{product}} Mobile Data Bundle
    </p>
    <p>
      Note that once your limit is reached, you might be capped and may not be able to connect. <br>
      <p>Regards,<br>{{ company_name }}</p>
  </div>
  <div id = "preview">
    <div class = "dragitems">
      <h3>
        <span>Available Fields</span></h3>
      <ul id = "allfields" runat = "server">
        <li id = "node1">{{Name}}</li>
        <li id = "node2">{{Address}}</li>
        <li id = "node3">{{product}}</li>
        <li id = "node11">{{Other4}}</li>
        <li id = "node12">{{Other5}}</li>
      </ul>
    </div>
  </div>
</div>

Вот такой jsFiddle

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

Twisty 21.11.2018 18:10

Я также вижу в вашем заголовке две версии jQuery UI. Это тоже может вызвать проблемы.

Twisty 21.11.2018 18:14

Разветвил и обновил скрипку для тестирования: jsfiddle.net/Twisty/jv4q6wcs

Twisty 21.11.2018 19:14

@Twisty - Спасибо за 4-е обновление. Я вижу хороший прогресс, однако я все еще борюсь за то, чтобы разместить текст, где находится курсор, вместо добавления в конец строки.

Africa Matjie 21.11.2018 20:33

Текущий прогресс: jsfiddle.net/Twisty/jv4q6wcs/120 Как видите, одна строка работает, а строка с переносом еще не работает.

Twisty 23.11.2018 16:38

@Twisty - Большое спасибо за помощь, но я решил пойти другим путем.

Africa Matjie 26.11.2018 09:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
660
0

Другие вопросы по теме