Как добавить новый DIV при клике по Enter сразу после дива и сделать на нем focus()?
В моём решении вместо 1 дива добавляет разное множественное количество...
<!DOCTYPE html>
<html>
<body>
<!-- Весь список check-листов -->
<section id="lists">
<!-- Первая группа check-листов -->
<div class="group">
<div class="list">
<div class="list-container">
<input type="checkbox"><div class="check-text" contenteditable></div>
</div>
</div>
<div class="list">
<div class="list-container">
<input type="checkbox"><div class="check-text" contenteditable></div>
</div>
</div>
</div>
<!-- Вторая группа check-листов -->
<div class="group">
<div class="list">
<div class="list-container">
<input type="checkbox"><div class="check-text" contenteditable></div>
</div>
</div>
<div class="list">
<div class="list-container">
<input type="checkbox"><div class="check-text" contenteditable></div>
</div>
</div>
</div>
<!-- ... Следующая группа check-листов и т.д. -->
</section>
<script>
//функция, которая создает новый див
function enterCheck(e) {
//создаем новый див
let div = document.createElement('div');
//добавляем ему класс
div.classList.add('list');
//наполняем шаблоном списка
div.innerHTML = `
<div class="list-container">
<input type="checkbox"><div class="check-text" contenteditable></div>
</div>
`;
//перемещаемся на несколько дивов наверх (к началу текущего дива)
//и добавляем после него созданный div
e.parentNode.parentNode.after(div);
//устанавливаем на .check-text созданного дива focus()
//чтобы в нем можно было сразу вводить текст
div.querySelector('.check-text').focus();
}
//собираем массив всех checkText'ов
let checkTexts = document.querySelectorAll('.check-text');
//перебираем этот массив
checkTexts.forEach(function(e){
//когда сфокусирован на определенном checkText
e.addEventListener('focus', function(){
//когда в нём нажимаются клавиши
e.addEventListener('keypress', function(event){
//когда нажата Enter
if(event.keyPress === 13){
//отменяем стандартное поведение(перенос строки)
event.preventDefault();
//если текущий блок не пустой, то добавляем новый сразу после него
if(this.innerText !== '') {
enterCheck(this);
}
}
});
});
});
</script>
</body>
</html>