You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3中@keydown绑定多个函数报错:Cannot read properties of undefined

Vue3 @keydown绑定多函数触发TypeError错误的解决方法

问题现象

在Vue3的input标签中使用@keydown="test(); numOnly();"同时绑定两个函数时,触发错误:TypeError: Cannot read properties of undefined (reading 'key'),移除test()后numOnly函数可正常工作。

相关代码:

numOnly(event) {
  const numPattern = /[\d]/;
  const eventVal = event.key;
  if (!numPattern.test(eventVal)) {
    event.preventDefault();
  } else {
    return true;
  }
},
test() {
  console.log('Test function() called');
}

解决方法

方法1:显式传递事件对象

修改input的事件绑定,给numOnly函数手动传递$event参数:

<input @keydown="test(); numOnly($event);" />

方法2:合并为单个处理函数

定义一个新的处理函数,在内部依次调用test和numOnly,再绑定这个新函数:

handleKeydown(event) {
  this.test();
  this.numOnly(event);
}
<input @keydown="handleKeydown" />

原因说明

当Vue事件绑定中直接写多个函数调用(如func1(); func2();)时,Vue不会自动将事件对象传递给需要参数的函数。而单独绑定@keydown="numOnly"时,Vue会自动把事件对象作为参数传入numOnly函数,所以能正常工作。因此需要手动传递$event,或者合并函数统一处理。

内容的提问来源于stack exchange,提问作者Acs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 02:20:45