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

Javascript Vue-仅当连续按两次键时触发事件,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我在应用程序中实现了一个特殊字段,当用户输入@(shift+50)字符时,将弹出一个窗口,以便用户可以访问预定义的变量 <textarea @keyup.shift.50="showWindow"></textarea> 我的问题是:我不希望当用户只按一次键时窗口出现,我希望当用户按两次键时窗口出现 有可能吗?===============================================================================

我在应用程序中实现了一个特殊字段,当用户输入
@(shift+50)
字符时,将弹出一个窗口,以便用户可以访问预定义的变量

<textarea @keyup.shift.50="showWindow"></textarea>

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


有可能吗?

=============================================================================================================

编辑:为您修改和清理代码-此代码效率更高,不包含任何“bug”(其他代码中有一些缺陷)

说明:我基本上收集所有的“shift.50”按键并比较它们的增量-然后覆盖-这意味着如果你按下“shift.50”,直到5分钟后再按它(这将是旧代码中的第二次单击),你必须基本上单击它3次才能触发“do the needful”事件

========================================================================================

说明:在下面的代码中,我记录了您使用数据属性“pressCount”单击“shift.50”按钮的次数。在第一次按键时,我将点击事件存储在“按键”中,以便将增量(这是可以在“增量”下设置的属性)与第二次按键进行比较。如果在N(其中N=delta)内连续按下两次键,则可以“执行所需操作”


“他按a键两次”你的意思是像双击一样,还是仅仅在第二次点击时触发?(即,点击之间的时间差是否重要?@Daniel是的,双击,但在我的例子中,我只捕获了keyup事件。。。时间问题。。。我认为时间应该类似于在计算机中单击鼠标,如果你只需单击它,选择它,如果你单击足够快,它将打开…我没有否决你,但如果你解释你在答案中添加的代码的相关部分,而不是仅仅提供链接,可能会有所帮助。请参阅:“为链接提供上下文”
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;
    },
  }
})
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;
      }
    },
  }
})