Невозможно переместить курсор в выделенном тексте и изменить текст

У меня есть мобильное приложение CordovaJS/Angular 1.x, и у меня есть представление, представленное ниже с div редактируемого содержимого - при наборе текста в редактируемом div пользователь не может переместить курсор для редактирования текста - но дополнительная логика ниже требуется, чтобы пользователь мог печатать текстовый фокус и затем снова, когда div снова в фокусе, чтобы продолжить печатать текст в конце существующего текста

В настоящее время в приведенном ниже коде есть проблема, из-за которой я могу ввести текст, но затем я не могу нажать внутри текстовой строки и редактировать с выбранной пользователем позиции существующей строки.

например, если пользователь введет "Мое имя Jon Smidth", он не сможет нажать внутри любого слова, чтобы исправить любые опечатки, которые он мог сделать - какие-либо идеи о том, как это исправить?

// шаблон (не все видно для ясности)

<div class="post-textarea-wrapper" ng-click="focusTextArea()">
  <div contenteditable id="post-textarea" ng-model="post.text" ng-click="focusMdpInput($event)" 
ng-trim="false" ng-blur="showHidden()"></div>
<!-- additional code not shown for clarity -->

// Контроллер

$scope.focusTextArea = function(service) {
    document.getElementById("post-textarea").focus();
    if ($scope.post.text.length > 1) {
        setEndOfContenteditable($("div#post-textarea").get(0));
    }

};

function setEndOfContenteditable(contentEditableElement)
{
    var range,selection;

    range = document.createRange();//Create a range (a range is a like the selection but invisible)
    range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range
    range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start
    selection = window.getSelection();//get the selection object (allows you to change selection)
    selection.removeAllRanges();//remove any selections already made
    selection.addRange(range);//make the range you have just created the visible selection
}

0 ответов

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