由于同一页面上的两个表单执行不同的提交,我有一个隐藏表单。然后,隐藏表单保存密码字段,一旦输入密码字段,它将向用户显示一个部分,这部分全部与 PHP 一起使用,并且当单击按钮时。然而,我有一个addEventListener
在输入字段上监听用户何时按下“Enter”。在事件监听器中,我声明了按钮的名称,然后 click()
提交表格的方法。但我遇到了以下错误:
Uncaught TypeError: this.confirmPassowrd() is not a function?
JS
enterKey()
{
document.querySelector('#password-confirm').addEventListener('keydown', function (e) {
if (e.key === 'Enter') {
this.confirmPassword();
}
});
}
confirmPassword()
{
document.getElementById('confirm-password').click();
}
我不完全确定发生了什么,但是如果我将其作为普通函数放在 html 所在的页面上,并使用 EnterKey() 方法调用它,它就可以正常工作。有什么建议吗?
亲切的问候,
詹姆斯
最佳答案
您将在 keydown
事件监听器回调中丢失类的上下文。
尝试将您传入的function (e)
切换为箭头函数:e =>
箭头函数将保留其创建位置的词法this
,而函数
将接受在以下情况下传递给它的任何this
:它被调用。因此,在您的事件监听器函数中,this
不再意味着“我在其中定义的类的实例”。
关于javascript - JS 类中的方法不带函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304399/