Задать вопрос
@FetterDetka

Как заменить span на input по двойному клику в JQuery?

Хочу сделать возможность редактировать элементы to do. Создаю DOM элемент следующим образом:

$("#to-do-list").append(
                    `<li class=list-decorate id=${tempHolderId}>
                        <input type=checkbox  ${checked} class=task-check >
                        <span  class=task-txt word-break=break-all id=spanId>${tempHolderText} </span>
                        <input type=button class=task-delete-button value=Delete >
                        <input type=button  class=task-edit-button value=Edit ><br/>
                    </li>`
                );


Дальше хочу по двойному клику превратить span в input, отредактировать текст, и по нажатию Enter сохранить его в массив(taskListHolder).

Потом отрисовать элемент обратно, при помощи функции выше. Интересует реализация с заменой span на input.

Про contenteditable=true для span знаю.

Пока сделал:

$(document).on("dblclick","#spanId", function(){
     
});
/code>
  • Вопрос задан
  • 485 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
v3shin
@v3shin
Веб-шаман
Ну, типа такого:
if (!this.querySelector('input')) {
    this.innerHTML = `<input type="text" value="${this.innerText}">`;
}

И можно еще добавить свистоперделок, например, сохранять куда-нибудь предыдущее значение span для возможности отмены редактирования.
P.S.: кавычки при генерации html ставить стоит.
P.P.S.: и id span'ов лучше генерить уникальные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы