当我在javascript中按下复选框时,自动完成会随机激活

当我在javascript中按下复选框时,自动完成会随机激活,javascript,input,Javascript,Input,我正在用javascript制作一个待办事项列表,但在插入一个元素后,当我尝试按下任务生成的复选框时,我得到了一个随机下拉列表(来自隐藏的输入(removeChild)) 我试图重新编码某些部分,但一直遇到这个问题: -显示:无 -隐藏(真实) 它可以发生在Firefox上,但不能发生在Chrome上 function createInput(type, value = "", name = "", placeholder = "", require = false) { const

我正在用javascript制作一个待办事项列表,但在插入一个元素后,当我尝试按下任务生成的复选框时,我得到了一个随机下拉列表(来自隐藏的输入(removeChild))

我试图重新编码某些部分,但一直遇到这个问题:
-显示:无
-隐藏(真实)

它可以发生在Firefox上,但不能发生在Chrome上

function createInput(type, value = "", name =  "", placeholder = "", require = false)
{
    const input = document.createElement("input")
    input.setAttribute("type", type)
    input.setAttribute("style", "margin-right:10px")
    if (value !== "") {
        input.setAttribute("value", value)
    }
    if (name !== "") {
        input.setAttribute("id", name)
        input.setAttribute("name", name)
    }
    if (placeholder !== "") {
        input.setAttribute("placeholder", placeholder)
    }
    if (require) {
        input.setAttribute("required", "true")
    }
    return input
}
const addTaskElt = document.getElementById("add_task")
const formElt = document.getElementById("list_task")
const inputElt = createInput("text", "", "task", "Entrez votre tâche")
const submitElt = createInput("submit", "Ajouter")

const buttonElt = document.createElement("button")
buttonElt.textContent = "Ajouter une tâche"
addTaskElt.appendChild(buttonElt)

buttonElt.addEventListener("click", function(e) {
    addTaskElt.removeChild(buttonElt)
    addTaskElt.appendChild(inputElt)
    addTaskElt.appendChild(submitElt)
    inputElt.focus()

    formElt.addEventListener("submit", function(e) {
        e.preventDefault()
        const itemElt = document.createElement("span")
        const checkElt = createInput("checkbox")
        const taskElt = document.createElement("span")
        if (e.target.task.value !== "") {
            taskElt.textContent = e.target.task.value
            itemElt.classList.add("item")
            itemElt.appendChild(checkElt)
            itemElt.appendChild(taskElt)
            formElt.appendChild(itemElt)
            // Switch form and button
            inputElt.value = "" // clear input
            addTaskElt.removeChild(inputElt)
            addTaskElt.removeChild(submitElt)
            addTaskElt.appendChild(buttonElt)
        }


        // We can edit the task by clicking it
        taskElt.addEventListener("click", function() {
            const result = prompt("Modifier la tâche")
            if (result === null) {

            }
            else if (result === "") {
                formElt.removeChild(itemElt)
            }
            else {
                taskElt.textContent = result
            }
        })

        checkElt.addEventListener("change", function(e) {
            if (e.target.checked) { // if check, task done
                taskElt.setAttribute("style", "color:gray;text-decoration:line-through")
            }
            else {
                taskElt.setAttribute("style", "color:black")
            }
        })
    })
})

从你上面的评论来看,我假设.setAttribute(“自动完成”、“关闭”)可以解决你的问题


在默认情况下,输入字段上的autocomplete似乎处于启用状态,但我在mdn上没有看到默认情况。但是,它确实指出“建议值的来源通常由浏览器决定”。因此,如果浏览器认为列表中的项目对该输入字段很重要,则继续显示相关列表。

我们可以看到函数createInput吗?您可能需要在输入元素上执行.setAttribute(“自动完成”、“关闭”)。我在帖子中添加了它,是的,它正在使用它:我在使用removeChild时使用了它,然后在再次使用它之前,我将其打开。非常感谢。如果有人知道为什么会这样,我也会很高兴,真的很想知道为什么会这样!谢谢你,它现在起作用了!仍然在试图弄清楚为什么自动完成列表会出现在网页的左上角而没有它。