我有一个隐藏的表单,因为两个表单在同一页上做不同的提交。隐藏的表单保存了密码字段,一旦输入该字段将向用户显示一个部分,此部分全部用于PHP操作,并在单击按钮时使用。但是,当用户按下'Enter‘时,我在输入字段上有一个addEventListener
来侦听。在事件侦听器中,我声明了按钮的名称,然后声明了提交表单的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()方法调用它,它就可以正常工作了。有什么建议吗?
致以亲切的问候,
詹姆斯
发布于 2019-03-22 08:55:33
您将在keydown
事件侦听器回调中丢失类的上下文。
尝试将您要传入的function (e)
切换到箭头函数:e =>
箭头函数将保留其创建位置的词法this
,而function
将接受调用时传递给它的任何this
。因此,在您的事件侦听器函数中,this
不再意味着“定义在其中的类的实例”。
https://stackoverflow.com/questions/55304399
复制