编辑字段没有替换旧值?

问题描述 投票:0回答:1

为什么我的编辑功能无法保存新的文本和日期值?目前,该函数显示编辑模式,但如果文本为空,则无法提交更新的文本。尽管更新了数组中的对象并将其呈现在 DOM 中,但它似乎将新值视为空白,导致保存失败。可能是什么原因导致这个问题?

function editTask(id) {
  let taskIndex = taskArray.findIndex((task) => task.id === id);
  let taskElement = document.querySelector(`.task-to-do[data-id="${id}"]`);

  let Editedmodal = document.querySelector("#edit-modal");
  let EditedInputTask = document.querySelector("#edit-task");
  let EditedInputDate = document.querySelector("#edit-duedate");

  EditedObject = {
    EditTask: taskArray[taskIndex].task,
    Editdate: taskArray[taskIndex].date
  }



  Editedmodal.style.display = "grid";
  /*Submit Edited task Form*/
  EditedsubmitForm.addEventListener("click", (e) => {

    EditedInputTask.value = EditedObject.editTask;
    EditedInputDate.value = EditedObject.Editdate;
    /*Form Validaion*/
    if (!EditedInputTask.value) {
      EditedInputNoTask.style.display = "block";
      EditedInputTask.style.marginTop = "-1em";
      timeout = setTimeout(() => {
        EditedInputNoTask.style.display = "none";
        EditedInputTask.style.marginTop = "0";
      }, 3000);
    }

    if (!EditedInputDate.value) {
      EditedInputNoDate.style.display = "block";
      EditedInputDate.style.marginTop = "-1em";

      timeout = setTimeout(() => {
        EditedInputNoDate.style.display = "none";
        EditedInputDate.style.marginTop = "0";
      }, 3000);
    } else {
      Editedmodal.style.display = "none";
      EditedInputTask.value = "";
      EditedInputDate.value = "";
    }

    taskArray[taskIndex].task = EditedInputTask.value;
    taskArray[taskIndex].date = EditedInputDate.value;


    taskElement.querySelector("#list-item-date").textContent = `Due: ${taskArray[taskIndex].date}`;
    taskElement.querySelector("#list-item-task").textContent = taskArray[taskIndex].task;
    
    renderTask();
    storeTaskArrayLocally();
    

    console.log(EditedObject)

  });
javascript arrays function event-listener
1个回答
0
投票

由于您更新

taskArray
中的任务值的时间安排,您的代码可能会遇到问题。您当前正在更新它们,然后再验证输入字段是否为空。

要解决此问题,我建议将任务更新移至

else
块内,您将在其中检查两个输入字段是否不为空。这样,您就可以确保任务值仅在必要时更新。

EditedsubmitForm.addEventListener("click", (e) => {
  EditedInputTask.value = EditedObject.editTask;
  EditedInputDate.value = EditedObject.Editdate;
  
  /*Form Validation*/
  if (!EditedInputTask.value) {
    // Validation for task input field
  }

  if (!EditedInputDate.value) {
    // Validation for date input field
  } else {
    // If both input fields are not empty
    Editedmodal.style.display = "none";
    EditedInputTask.value = "";
    EditedInputDate.value = "";

    // Update task values in taskArray
    taskArray[taskIndex].task = EditedInputTask.value;
    taskArray[taskIndex].date = EditedInputDate.value;

    // Update task values in the DOM
    taskElement.querySelector("#list-item-date").textContent = `Due: ${taskArray[taskIndex].date}`;
    taskElement.querySelector("#list-item-task").textContent = taskArray[taskIndex].task;
    
    renderTask();
    storeTaskArrayLocally();
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.