Vue-仅当您连续两次按键时触发事件

时间:2019-02-26 16:54:56

标签: javascript vue.js vuejs2

我正在应用程序中实现一个特殊字段,当用户输入getQuantityString(R.plurals.stars, quantity > 1f ? 2 : 1, quantity): 字符时,将弹出一个窗口,以便用户可以访问预定义的变量...

@ (shift + 50)

我的问题是:我不希望用户仅按一次键时出现窗口,我希望当用户按两次键时出现窗口。

有可能吗?

1 个答案:

答案 0 :(得分:1)

============ NEW ================================ ============

编辑:为您修改并清理了代码-此代码效率更高,并且不包含任何“错误”(其他代码中有一些缺陷)。.

说明:我基本上会收集所有“ shift.50”按键并比较它们的增量-然后覆盖-这意味着,如果您按“ shift.50”,那么直到5分钟后才再按一次(将是第二次单击旧代码),那么您实际上必须单击3次才能触发“执行所需”事件。

https://jsfiddle.net/yL57kbhf/

var myapp = new Vue({
  el: '#app',
  data: {
    delta: 1000, // in ms
    keyPress: null,
  },
  methods: {
    keyPressed(key) {
      if(this.keyPress !== null){ 
        let d = key.timeStamp - this.keyPress.timeStamp;
        if(this.delta > d){
            alert('do something here!')
        }
      }
      this.keyPress = key;
    },
  }
})

============== OLD ============================== =============

说明:在以下代码中,我跟踪您使用数据属性'pressCount'单击'shift.50'按钮的次数。第一次按下时,我将点击事件存储在“ keyPress”中,以比较第二次按下的增量(可以在“ delta”下设置的属性)。如果N内连续有2次按键(其中N =增量),则可以“做有需要的工作”。

https://jsfiddle.net/c0tk6pbx/

var myapp = new Vue({
    el: '#app',
  data: {
    delta: 1000, // in ms
    pressCount: 0,
    firstPress: null,
  },
  methods: {
    keyPressed(key) {
        this.pressCount++;
        if(this.pressCount === 1){
        this.firstPress = key;
      } 
      if(this.pressCount === 2){
        let d = key.timeStamp - this.firstPress.timeStamp
        if(this.delta > d){         
            alert("do something here");
        }
        this.pressCount = 0;
      }
    },
  }
})