【问题标题】:Vue keyboard events not firingVue键盘事件未触发
【发布时间】:2016-08-30 07:12:23
【问题描述】:

Vue 不会触发任何键盘事件,它会对点击事件做出反应,但会尝试观察并触发 keypresskeyupkeydownchangeinputfocus 或 @987654328 @all 什么都不做。我做了一个 jQuery 测试来观察相同的事件,它们都被相应地触发了,那么我在 Vue 中缺少什么?

到目前为止,这是我的模板,用于监视键盘事件

...
<input type="text" placeholder="email" :value="email" v-on:change="updateEmail"/>
<input type="password" placeholder="password" :value="password" v-on:change="updatePassword"/>
...

我已经尝试用许多不同事件的变体替换上面的内容,如上所述,change 事件是我最近的尝试。任何帮助将不胜感激。

【问题讨论】:

  • 你能在 jsfiddle.net 上重现它吗? v-on:input 应该可以正常工作。
  • 我使用 Vue、VueRouter 和 Vuex link here 在 codepen 上写了一支笔,但它按预期工作,让我相信问题出在其他地方。在我这边,我使用 Webpack 来构建,所以我的猜测是它要么是 webpack,要么是它的子组件导致它不能正确构建,玉解释器可能会弄乱 v-on,或者其他什么。
  • 我找到了问题并已解决,感谢您的快速帮助

标签: javascript vue.js vue-component dom-events vue-router


【解决方案1】:

所以我发现了问题,它是几件事的结合,核心问题是此处列出的代码上方的 html 拼写错误 &lt;srong&gt;...&lt;/strong&gt; 应该触发错误但没有触发,因此引发了事件系统不知何故。

它没有触发错误,因为第二个问题是由于一个废弃的插件gzip 我忘记删除 gzip 文件,因此服务器正在为它们提供服务(旧的 gzip 文件)而不是新建的文件。

我放弃了该插件,因为我认为它会干扰 jquery 插件无法正常工作的第 3 和第 4 问题。问题是我没有考虑使用\的Windows路径匹配,所以需要[\\\/]来匹配Windows和unix路径,因此没有正确设置lib代码,结合将插件安装在一个单独的块中,导致它没有安装在所有的块中,这是根本原因。

现在一切都解决了,谢谢大家的帮助

【讨论】:

    【解决方案2】:

    使用v-model:

    <input type="text" placeholder="email" v-model="email">
    

    这将自动将输入与电子邮件的值同步

    change 事件的快捷方式也是 @change="updateEmail"

    【讨论】:

    • 嗯,我也在使用 vuex 数据存储,有没有办法获取模型更新,以便我可以在 vuex 存储上调用必要的函数?
    • 从文档中查看这个例子,这正是你想要做的:vuex.vuejs.org/en/forms.html
    • 尝试使用&lt;input&gt; 而不是&lt;input/&gt;...。您有任何控制台错误吗?请同时显示 vuex 操作
    • 尝试删除斜线,没有控制台错误,这是我的 vuex 操作actions: { updateEmail(store, e) { console.log("updateEmail", arguments); func("auth", "setEmail")(store, e.target.value); }, updatePassword(store, e) { console.log("updatePassword", arguments); func("auth", "setPassword")(store, e.target.value); } },
    • console.log 也永远不会被调用
    猜你喜欢
    • 2011-03-06
    • 2013-09-22
    • 2010-12-26
    • 2015-08-21
    • 1970-01-01
    • 2013-03-12
    • 2020-08-10
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多