【问题标题】:Vuejs keyup event trigger with keyCode and condition带有keyCode和条件的Vuejs keyup事件触发
【发布时间】:2018-09-27 06:34:15
【问题描述】:

我想在条件下绑定一个事件,并仅在用户输入特定键时触发它,例如,

1) 我想在标签的值等于标签的时候绑定事件

<input type="text" v-on="{ keyup: (label == 'Tags') ? $event => onTagAdd($event, index) : {} }"    v-model="value">

onTagAdd: function (oEvent, index){           
        if(oEvent.key === ";"){
            //some code
        }
    }

它按预期工作。

2) 此外,我只想在 ; (virtual key code = 186) 按下,所以我尝试了下面的代码

<input type="text" v-on="{ 'keyup.186': (label == 'Tags') ? $event => onTagAdd($event, index) : {} }"    v-model="value">

它不工作。我已经推荐了vue.js documentation 但是,没有任何解决方法。

如何做到这一点?

注意:我已经取消了这种方法,因为它在 IE 中为 $event 出现错误。仍在寻找解决问题并支持浏览器兼容性的解决方案。

【问题讨论】:

  • 在我的键盘中,我必须使用键码 188 而不是 186 来捕获分号,就像您链接的页面中一样:
  • @JaviMollá 试过了,但没有成功

标签: vue.js vuejs2


【解决方案1】:

试试这个,告诉我它是否有效。

<input type="text" v-on:keyup.186="{ (label == 'Tags') ? $event => onTagAdd($event, index) : {} }"    v-model="value">

【讨论】:

  • 我已经尝试过使用不同的引用组合,对于上述特定组合,下面是错误“vue.js:597 [Vue warn]: Failed to generate render function: SyntaxError: Unexpected number在"
【解决方案2】:

可能内联样式不支持事件类型中的键码(不确定),试试这个:

<input type="text" v-on:keyup.186="onTagAdd($event,2)"    v-model="value">

methods: {
        onTagAdd(event,index){
            // put your logic codes here
            console.info('==')
            console.info(event)
            console.info(index)
        }
    }

【讨论】:

  • 它不起作用,因为我只需要在特定条件(label == 'Tags')发生时绑定事件。
  • 你可以在方法里面移动你的条件,有什么限制吗?就像这样:if (this.label === 'Tags') .... else ...
  • 如果它是 label 动态字段,您可以简单地将其作为参数传递给方法并在内部执行您的逻辑
  • 我已经消除了这种方法,因为它在 IE 中为 $event 出现错误。仍在寻找解决问题并支持浏览器兼容性的解决方案。 (阙加注)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多