Как перетаскивать текст с помощью jQuery - PullRequest
2 голосов
/ 29 сентября 2019

Мне нужно создать шаблон сообщения следующим образом:

Hello Stackoverflow {Текст A} Спасибо за вашу поддержку {Текст B}

enter image description here

В этом случае мне нужно использовать перетаскивание полей в Textarea, я выполнил начальные НИОКР, чтобы найти библиотеку для выполнения моего требования, и нашел это Вставка текста с помощью перетаскиванияn 'drop

$(document).ready( function() {
  $('#ClickWordList li').click(function() { 
    $("#txtMessage").insertAtCaret($(this).text());
    return false
  });
  $("#DragWordList li").draggable({helper: 'clone'});
  $(".txtDropTarget").droppable({
    accept: "#DragWordList li",
    drop: function(ev, ui) {
      $(this).insertAtCaret(ui.draggable.text());
    }
  });
});

$.fn.insertAtCaret = function (myValue) {
  return this.each(function(){
  //IE support
  if (document.selection) {
    this.focus();
    sel = document.selection.createRange();
    sel.text = myValue;
    this.focus();
  }
  //MOZILLA / NETSCAPE support
  else if (this.selectionStart || this.selectionStart == '0') {
    var startPos = this.selectionStart;
    var endPos = this.selectionEnd;
    var scrollTop = this.scrollTop;
    this.value = this.value.substring(0, startPos)+ myValue+ this.value.substring(endPos,this.value.length);
    this.focus();
    this.selectionStart = startPos + myValue.length;
    this.selectionEnd = startPos + myValue.length;
    this.scrollTop = scrollTop;
  } else {
    this.value += myValue;
    this.focus();
  }
  });
};

HTML

<body>
    <div id="maincontainer">
        <div id="navtoplistline">&nbsp;</div>
        <div id="contentwrapper">
            <div id="maincolumn">
                <div class="text">
                    <h2>Message #1</h2>
                    <textarea name="txtMessage" id="txtMessage" class="txtDropTarget ui-droppable" cols="80" rows="15"></textarea>
                    <h2>Message #2</h2>
                    <textarea name="txtMessage2" id="txtMessage2" class="txtDropTarget ui-droppable" cols="80" rows="15"></textarea>
                </div>
            </div>
        </div>
        <div id="leftcolumn">
            <fieldset>
                <legend>Click to insert:</legend>
                <ul id="ClickWordList">
                    <li>Hello world!</li>
                    <li>All your base</li>
                    <li>Lorem ipsum dolor sit amet...</li>
                </ul>
            </fieldset>
            <fieldset>
                <legend>Drag to insert:</legend>
                <ul id="DragWordList">
                    <li class="ui-draggable">Hello world!</li>
                    <li class="ui-draggable">All your base</li>
                    <li class="ui-draggable">Lorem ipsum dolor sit amet...</li>
                </ul>
            </fieldset>
        </div>

    </div>
</body>

Это прекрасно работает, , но мне нужно только нажать на поле идобавить выбранный элемент в Textarea (опция перетаскивания не требуется), а также необходимо удалить добавленное поле из Textarea, нажав на крестик. Как я могу это сделать, пожалуйста, помогите мне решить эту проблему . Приведенный выше пример не совсем понятен для меня. поэтому, пожалуйста, помогите мне решить это.

Обновление: Как говорит Твисти, не может реализовать X внутри Textarea, что я могу использовать вместо него? Любое предложение?

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