【问题标题】:VueJS does not fire input event on first input in IE11VueJS 在 IE11 中的第一次输入时不会触发输入事件
【发布时间】:2019-02-04 22:39:13
【问题描述】:

我有一个带有@input="onInput" 的输入集。

onInput 方法中,我输出了一些控制台信息(基本上只是even.currentTarget.value)。我注意到在IE11 中,当我关注输入然后按下任何按钮(或使用ctrl+v)时,一旦控制台中没有输出.

然后,第二次尝试调用处理程序,event.currentTarget.value 拥有整个字符串。

它只发生在 IE11

有什么解决办法吗?

【问题讨论】:

    标签: javascript vue.js vuejs2 internet-explorer-11


    【解决方案1】:

    IE 对某些字段类型的 input 事件没有很好的支持:

    <select> 不会触发输入事件。 (取消)选中复选框或单选按钮时不触发输入事件。 https://caniuse.com/#search=oninput

    [IE] 完全忽略输入事件 [在范围输入上。] 他们的 change 事件的行为就像其他浏览器上的 input 事件一样 https://blog.vendivel.com/javascript/2016/01/31/ie-oninput-bug.html

    keyup 事件可以用作替代如果您需要按键处理(虽然这不支持粘贴操作),或者您可以使用change 事件如果您可以等到用户完成输入数据。

    【讨论】:

    • 原来我有空的占位符,它破坏了东西。我有自己的文本输入自定义组件,并且有一个占位符道具,默认设置为空字符串。我把它改成了null,看起来它修复了这个错误
    【解决方案2】:

    原来我将placeholder 设置为一个空字符串。所以实际上我有一个组件,它是<input> 的包装器。在这个组件中,我有一个placeholder 属性,默认设置为空字符串并应用于<input> 标签。

    默认情况下我将占位符属性设置为 null,这很有帮助

    【讨论】:

    • 从您的上一篇文章中,我可以看到您已经解决了问题并发布了您的解决方案。如果您尝试在 24 小时后将自己的答案标记为已接受的答案,那么这将对其他社区成员有所帮助。感谢您的理解。
    • @Deepak-MSFT 完成!谢谢! :)
    猜你喜欢
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多