У скрытого inputa не обновляется value

Синим выделен первый тег, который вписан вручную в HTML разметку. Последующий также вписан вручную, а остальные добавляются с помощью input и JS.

введите сюда описание изображения

После каждого добавления нового тега выполняется функция updateHiddenTags(), которая должна обновлять value скрытого input, но этого не происходит. Что я делаю не так?

const tagInput = document.querySelector('.tag_input');
const tagContainer = document.querySelector('.tag_container');
const hiddenTags = document.querySelector('.tag_input-hidden');
const existingTags = "<?= isset($task['tags']) ? $task['tags'] : '' ?>"
const tagWrapper = document.querySelector('.todo-tasks__tags-wrapper');
const tags = document.querySelector('.tags');

function createTag(text) {
  const tag = document.createElement('div');
  tag.classList.add('todo-tasks__tags-tag-wrapper', 'tag_container');
  const tagText = document.createElement('div');
  tagText.classList.add('todo-tasks__tags-tag');
  tagText.textContent = text;
  const closeButton = document.createElement('button');
  closeButton.classList.add('todo-tasks__tags-tag-button');
  closeButton.setAttribute('type', 'button');
  closeButton.innerText = 'X';

  tag.appendChild(tagText);
  tag.appendChild(closeButton);

  return tag;
}

function updateHiddenTags() {
  const tags = tagContainer.querySelectorAll('.todo-tasks__tags-tag');
  const tagText = Array.from(tags).map(tag => tag.textContent);
  hiddenTags.value = tagText.join(', ');
}

tagInput.addEventListener('input', (e) => {
  if (e.target.value.includes(',')) {
    const tagText = e.target.value.slice(0, -1).trim();
    if (tagText.length > 1) {
      const tag = createTag(tagText);
      tags.appendChild(tag);
      updateHiddenTags();
    }
    e.target.value = '';
  }
});

tagInput.addEventListener('keydown', (e) => {
  if (e.keyCode == 13) {
    if (e.target.value.includes(',')) {
      const tagText = e.target.value.slice(0, -1).trim();
    }
    const tagText = e.target.value.trim();
    if (tagText.length > 1) {
      const tag = createTag(tagText);
      tags.appendChild(tag);
      updateHiddenTags();
    }
    e.target.value = '';
  }
});

tags.addEventListener('click', (e) => {
  e.target.closest('.tag_container').remove();
  updateHiddenTags();
})

tagInput.addEventListener('keydown', (e) => {
  if (e.keyCode == 13) {
    e.preventDefault();
  }
})
.todo-tasks__wrapper {
  display: flex;
  flex-direction: column;
  margin-top: 50px;
  padding: 100px;
  border-radius: 5px;
  align-items: center;
}

.todo-tasks__row {
  display: flex;
  gap: 50px;
}

.todo-tasks__col {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.todo-tasks__input {
  padding: 10px;
  border-radius: 5px;
}

.todo-tasks__input-select {
  background-color: #fff;
  border-radius: 5px;
  padding: 10px;
  width: 197px;
}

.todo-tasks__row-wrapper {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.todo-tasks__finish-date {
  width: 195px;
}

.todo-tasks__tags-wrapper {
  padding: 10px;
  background-color: #fff;
  border-radius: 5px;
  max-width: 195px;
}

.todo-tasks__tags-tag-wrapper {
  display: flex;
}

.todo-tasks__tags-input {
  padding: 10px;
  border-radius: 5px;
  border: 1px solid #000;
  margin-top: 10px;
  max-width: 175px;
}

.todo-tasks__tags-tag {
  background-color: #000;
  color: #fff;
  border-radius: 5px;
  padding: 5px;
  max-width: max-content;
  flex-wrap: wrap;
}

.todo-tasks__tags-tag-button {
  background-color: #000;
  color: #fff;
  padding: 5px;
  padding-right: 6px;
  border-radius: 5px;
}

.todo-tasks__tags-row {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}
<div class="todo-tasks__col">
  <label class="todo-tasks__label">Теги</label>
  <div class="todo-tasks__tags-wrapper">
    <div class="todo-tasks__tags-row tags">
      <?php
        $tagNames = array_map(function ($tag) {
            return $tag['name'];
        }, $toDoTags);

        foreach ($tagNames as $tagName):
      ?>
      <div class="todo-tasks__tags-tag-wrapper tag_container">
        <div class="todo-tasks__tags-tag">
          <?= $tagName ?>
        </div>
        <button class="todo-tasks__tags-tag-button" type="button">X</button>
      </div>
      <?php
        endforeach;
      ?>
    </div>
    <input type="text" class="todo-tasks__tags-input tag_input">
    <input type="text" class="tag_input-hidden" value="<?= implode(', ', $tagNames) ?>" hidden>
  </div>
</div>


Ответы (0 шт):