简体   繁体   English

如果 addEventListener 已被触发一次,则触发 removeEventLister

[英]Triggered removeEventLister if addEventListener has been triggered once

i want my event to be deleted if a file already been uploaded.如果文件已上传,我希望删除我的活动。 In other words, i want only one attachment to be added.换句话说,我只想添加一个附件。 But my 'active' variable is never equal to 'false'但我的“活动”变量永远不等于“假”

const form = document.querySelector("form"),
    fileInput = document.querySelector(".file-input"),
    progressArea = document.querySelector(".progress-area"),
    uploadedArea = document.querySelector(".uploaded-area"),
    clickedItem = document.querySelector(".clickkk");
let active = true;

if (active) {
    clickedItem.addEventListener("click", () => {
        fileInput.click();
    });
} else {
    clickedItem.removeEventListener("click", () => {
        fileInput.click();
    });
}

fileInput.onchange = ({ target }) => {
    let file = target.files[0];
    if (file) {
        let fileName = file.name;
        if (fileName.length >= 12) {
            let splitName = fileName.split('.');
            fileName = splitName[0].substring(0, 13) + "... ." + splitName[1];
        }
        uploadFile(fileName);
        active = false;
    }
}```

I suggest use local storage (you can use cookies and session storage too).我建议使用本地存储(您也可以使用 cookies 和 session 存储)。

localStorage.setItem('active', 'true');

let active = JSON.parse(localStorage.getItem('active'));
if (active) {
    clickedItem.addEventListener("click", () => {
        fileInput.click();
    });
} else {
    clickedItem.removeEventListener("click", () => {
        fileInput.click();
    });
}

and inside fileInput set this:并在 fileInput 内部设置:

localStorage.setItem('active', 'false');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM