单击页面上的任何其他内容后,应列出编辑按钮输入

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

我做了一个待办事项列表,我对此非常新,但在添加多个任务后,它添加了不完整的任务,并在尝试编辑任何列表时有一个编辑和删除按钮,它在type = text中转换但在进入外部时这个编辑任务仍然是打开编辑它应该不会发生在这里是java脚本代码

var taskInput=document.getElementById("new-task");
var addButton=document.getElementsByTagName("button")[0];
var incompleteTaskHolder=document.getElementById("incomplete-tasks");
var completedTasksHolder=document.getElementById("completed-tasks");

var createNewTaskElement=function(taskString){

    var listItem=document.createElement("li");

    var checkBox=document.createElement("input");

    var label=document.createElement("label");

    var editInput=document.createElement("input");

    var editButton=document.createElement("button");

    var deleteButton=document.createElement("button");

    label.innerText=taskString;

    checkBox.type="checkbox";
    editInput.type="text";

    editButton.innerText="Edit";
    editButton.className="edit";
    deleteButton.innerText="Delete";
    deleteButton.className="delete";

    listItem.appendChild(checkBox);
    listItem.appendChild(label);
    listItem.appendChild(editInput);
    listItem.appendChild(editButton);
    listItem.appendChild(deleteButton);
    return listItem;

}



var addTask=function(){
    console.log("Add Task...");
    if(taskInput.value==='')
        {
         alert('Required');   
        }
    else
        {
            var listItem=createNewTaskElement(taskInput.value);
            incompleteTaskHolder.appendChild(listItem);
            bindTaskEvents(listItem, taskCompleted);
            taskInput.value="";
        }
}


var editTask=function(){
console.log("Edit Task...");
console.log("Change 'edit' to 'save'");


var listItem=this.parentNode;

var editInput=listItem.querySelector('input[type=text]');
var label=listItem.querySelector("label");
var containsClass=listItem.classList.contains("editMode");

        if(containsClass){
            if(listItem.value=='')
                {
                     alert('empty edit');
                }
            else
                {
                   label.innerText=editInput.value;   
                }
        }else{
            editInput.value=label.innerText;
        }
        listItem.classList.toggle("editMode");
}
var deleteTask=function(){
        console.log("Delete Task...");
        var listItem=this.parentNode;
        var ul=listItem.parentNode;
        ul.removeChild(listItem);

}

var taskCompleted=function(){
        console.log("Complete Task...");
        var listItem=this.parentNode;
         completedTasksHolder.appendChild(listItem);
        bindTaskEvents(listItem, taskIncomplete);
}
var taskIncomplete=function(){
        console.log("Incomplete Task...");
        var listItem=this.parentNode;
        incompleteTaskHolder.appendChild(listItem);
            bindTaskEvents(listItem,taskCompleted);
}

var ajaxRequest=function(){
    console.log("AJAX Request");
}

//addButton.onclick=addTask;
addButton.addEventListener("click",addTask);
addButton.addEventListener("click",ajaxRequest);
$addNewTask.addEventListener("keypress",addTask);


var bindTaskEvents=function(taskListItem,checkBoxEventHandler){
    console.log("bind list item events");

    var checkBox=taskListItem.querySelector("input[type=checkbox]");
    var editButton=taskListItem.querySelector("button.edit");
    var deleteButton=taskListItem.querySelector("button.delete");

            editButton.onclick=editTask;

            deleteButton.onclick=deleteTask;

            checkBox.onchange=checkBoxEventHandler;
}

    for (var i=0; i<incompleteTaskHolder.children.length;i++){
        bindTaskEvents(incompleteTaskHolder.children[i],taskCompleted);
    }

    for (var i=0; i<completedTasksHolder.children.length;i++){
        bindTaskEvents(completedTasksHolder.children[i],taskIncomplete);
    }

这里是我添加javascript的HTML代码

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
   <title>Todo App</title>
   <link rel="stylesheet" href="{{asset('css/style.css')}}">
    <link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="utf-8">    
</head>
<body>
    <div class="container">
      <p>
        <label for="new-task">Add List</label><input id="new-task" type="text" placeholder="Enter to do list"><button class="btn btn-default">Add</button>
      </p>

      <h3>To-do List</h3>
      <ul id="incomplete-tasks">
      </ul>

      <h3>Completed Task</h3>
      <ul id="completed-tasks">
      </ul>
    </div>

    <script type="text/javascript" src="app.js"></script>
    <script  src="{{asset('js/index.js')}}"></script>

  </body>
</html>

这里附加一个图像,其中显示两个编辑输入,我想在尝试点击任何其他内容然后编辑应该列出,请帮助我

javascript html
1个回答
0
投票

在标题中回答你的问题

你应该为该按钮添加id或唯一标识符。

     $(document).ready(()=>{

        $(document.body).click((e)=>{
            var button = $('#your_button_id')
            if(e.target.id !== 'your_button_id' && $.contains(button[0]), e.target)) 
            {
             doSomething()
            }

        })

     })
© www.soinside.com 2019 - 2024. All rights reserved.