【问题标题】:How to preventDefault inside method如何防止默认内部方法
【发布时间】:2021-03-14 14:28:00
【问题描述】:

执行提交时,“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([...],[...]);

【问题讨论】:

  • 您是否遇到任何错误?
  • 你没有向execute函数传递任何参数
  • this.execute()更改为this.execute.bind(this)
  • 我收到e is undefined
  • 您正在调用该函数,而不是将其作为参考传递

标签: javascript events preventdefault


【解决方案1】:

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

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();
        [...]
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多