Привязка данных

231
07 июля 2017, 06:21

Есть два div-a, в одном находится редактируемый текст, в другом при выделении текста отображается выделенная часть. Необходимо при редактировании текста в первом диве редактировать его и во втором. Как такое можно реализовать?

Answer 1

Можно сделать вот так. Реализовал на textarea, а не на div'ах но смысл тот же. На клике по первому получаем выделенную область или ничего, если выделения не было, вставляем во второй. Я на всякий случай дисейблю второй:) У второго слушаем input, и новый текст вставляем между начальным и конечным сохранёнными индексами выделения.

let textarea1 = document.querySelector("#area1"), 
    textarea2 = document.querySelector("#area2"), 
    selectionStart, selectionEnd, selectedText, beforeString, afterString; 
     
function selectionHandler() { 
 
    selectionStart = Math.min(textarea1.selectionStart, textarea1.selectionEnd); 
    selectionEnd = Math.max(textarea1.selectionStart, textarea1.selectionEnd); 
         
    if (selectionStart < selectionEnd) { 
        selectedText = textarea1.value.substring(selectionStart, selectionEnd); 
        textarea2.value = selectedText; 
        textarea2.removeAttribute("disabled"); 
        beforeString = textarea1.value.slice(0, selectionStart); 
        afterString = textarea1.value.slice(selectionEnd); 
    } 
     
    if (selectionStart === selectionEnd) { 
        textarea2.setAttribute("disabled", true); 
        textarea2.value = ""; 
    } 
} 
 
function changeHandler() { 
    let newString = beforeString + textarea2.value + afterString; 
         
    textarea1.value = newString; 
} 
     
textarea1.addEventListener("click", selectionHandler); 
textarea2.addEventListener("input", changeHandler);
.textarea { 
  width: 100%; 
  height: 70px; 
}
<textarea id="area1" class="textarea"></textarea> 
<textarea id="area2" class="textarea" disabled></textarea>

READ ALSO
Аналог .closest(), только наоборот

Аналог .closest(), только наоборот

Подскажите пожалуйста аналог функцииclosest(), только чтоб перебор от родителя к ребенку до указанного элемента

320
XMLHttpRequest cannot load. No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource

XMLHttpRequest cannot load. No 'Access-Control-Allow-Origin' header is present on the requested resource

Добрый деньЕсть задача: используя REST API сервиса доставки, описанный здесь, осуществить запрос стоимости доставки

270
Как перебрать массив объектов?

Как перебрать массив объектов?

В массиве есть три объекта (в данном случае)Подскажите что мне сделать что бы я мог спокойно пройтись по каждому из них for циклом, взять значения...

367
Замена содержимого в слайдере bxslider

Замена содержимого в слайдере bxslider

Добрый деньМожно ли как-нибудь реализовать замену содержимого в слайдере bxslider при нажатии ссылки?

254