如何防止默认内部方法

How to preventDefault inside method

执行提交时,“e”未定义...如何preventDefault然后execute()? 我试过“this.execute”(没有括号),但是变量“form”不可访问。 也试过这个:

this.form.addEventListener("submit", function(e){e.preventDefault(); this.execute();}, false);

但不工作。

class Filters {
    form;

    constructor(form) {
        this.form = form;
        this.form.addEventListener("submit", this.execute(), false);
    }

    execute(e) {
        e.preventDefault();
        [...]
    }
}

let f = new Filters([...],[...]);

您需要将事件作为参数传递给执行方法,如下所示。

class Filters {
    form;

    constructor(form) {
        this.form = form;
        // Either use an arrow function or this.execute.bind(this) 
        this.form.addEventListener("submit", e => this.execute(e), false);
    }

    execute(e) {
        e.preventDefault();
        [...]
    }
}