Я работаю над своим сайтом, используя HTML и JavaScript. В нем есть веб-страница, которая по сути представляет собой список дел. Я хочу добавить новый элемент задачи, когда пользователь нажимает клавишу Enter.
Новый элемент задачи должен иметь флажок и способ добавления текста/заголовка к элементу задачи. Я пробовал использовать textaera и добавлять флажки, но их взаимодействие происходило неправильно (новый флажок, автоматически появляющийся при нажатии кнопки ввода, не происходил).
Я понял, как добавить «галочку» в флажок при нажатии.
Эти флажки не должны быть постоянными, и вместо этого, когда пользователь нажимает кнопку возврата, они должны исчезнуть и оставить пустую строку.
<textarea id = "Todolist" style = "height: 400px; width: 1200px"
placeholder = "Enter your todolist here"></textarea>
<button name = "Save" onclick = "save()">Save</button>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот пример, где я использую элементы ввода текста вместо текстовой области. Поведение по умолчанию при нажатии клавиши Enter в элементе ввода — это отправка формы. В этом случае нам нужно предотвратить это и вместо этого добавить новый элемент задачи.
Если вы удалите все стили из ввода, это будет выглядеть как свободный ввод текста с помощью клавиш Enter и Backspace, добавляющих и удаляющих «линии».
document.forms.form01.addEventListener('keydown', e => {
switch(e.key) {
case 'Enter':
e.preventDefault();
if (e.target.name == 'title'){
add_item(e.target.form);
}
break;
case 'Backspace':
if (e.target.name == 'title' && e.target.value == ''){
e.preventDefault();
remove_item(e.target);
}
break;
}
});
function add_item(form){
// create the new todo item
let fs = document.createElement('fieldset');
let cb = document.createElement('input');
cb.name = 'item';
cb.type = 'checkbox';
fs.append(cb);
let tb = document.createElement('input');
tb.name = 'title';
tb.type = 'text';
fs.append(tb);
// add the todo item to the items fieldset
form.items.append(fs);
// set focus to the new text input
tb.focus();
}
function remove_item(input) {
let fs = input.closest('fieldset');
// find the previous element
let prev_fs = fs.previousElementSibling;
// if there is a rev_fs set focus to the input
// in the previous text input.
// and delete the todo item/fieldset
if (prev_fs){
prev_fs.elements.title.focus();
fs.remove();
}
}fieldset {
border: none;
margin: 0;
padding: 0;
}
input[type = "text"] {
border: none;
}
input[type = "text"]:focus {
outline: none;
}<form name = "form01">
<fieldset name = "items">
<fieldset>
<input type = "checkbox" name = "item"><input type = "text" name = "title">
</fieldset>
</fieldset>
<button type = "submit">Save</button>
</form>
Пожалуйста, продемонстрируйте, что вы пробовали, обновив свой вопрос своим кодом.