javascript - Onsubmit 事件拒绝触发
问题描述
所以我有这个代码。
class Validationator
{
constructor()
{
this.initValidation()
}
initValidation()
{
window.addEventListener("load", this.PerformOnLoad, false);
}
PerformOnLoad()
{
var form = document.querySelector("#feedbackcontainer");
form.addEventListener("onsubmit", this.SubmitClicked);
}
SubmitClicked()
{
alert("asdf");
}
}
我试过同时使用“提交”和“提交”,但都没有工作。我已经验证查询选择器正在获取正确的表单。请原谅我是 Javascript 的初学者。事件处理程序不断击败我。
解决方案
事件的名称不包括on
前缀——仅在相应的属性名称中使用。
此外,如果您使用类方法作为回调函数,则需要将其绑定到对象。否则,this
方法中将是全局window
对象,而不是Validationator
对象。
class Validationator
{
constructor()
{
this.initValidation()
}
initValidation()
{
window.addEventListener("load", this.PerformOnLoad.bind(this), false);
}
PerformOnLoad()
{
var form = document.querySelector("#feedbackcontainer");
form.addEventListener("submit", this.SubmitClicked.bind(this));
}
SubmitClicked()
{
alert("asdf");
}
}
推荐阅读
- c - 调用 fork() 后函数返回值的可见性
- typescript - Serverless-offline 无法将 graphql 处理程序识别为函数
- python - Scrapy 认为重定向是重复的请求
- node.js - Http-server 无需端口即可访问应用程序
- dafny - Dafny Big-Step- 断言违规
- mysql - 如何在mysql上查看一个表的属性是否多次出现在另一个表中?
- android - 如何更改地图的“地点自动完成”搜索的字体系列?
- html - 在 3party 页面中集成 JSF 页面
- java - AsyncTask 在后台方法中执行 try/catch 都被执行
- flutter - crossAxisAlignment.stretch 使一切不可见