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;
}
},
}
})