Vue - запуск события, только если вы нажмете клавишу дважды - PullRequest
0 голосов
/ 26 февраля 2019

Я реализую специальное поле в моем приложении, когда пользователь вводит символ @ (shift + 50), появляется окно, чтобы пользователь мог получить доступ к предопределенным переменным ...

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

Мой вопросявляется: я не хочу, чтобы окно появлялось, когда пользователь нажимает клавишу только один раз, я хочу, чтобы окно появлялось, когда он нажимает клавиши дважды.

Возможно ли это?

1 Ответ

0 голосов
/ 26 февраля 2019

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

.

.

============= СТАРЫЙ ============================================

Объяснение: В следующем коде я отслеживаю, сколько разВы нажимаете кнопку «shift.50», используя свойство данных «pressCount».При первом нажатии я сохраняю событие нажатия в «keyPress», чтобы сравнить дельту (свойство, которое можно установить в «дельте») со вторым нажатием клавиши.Если есть два последовательных нажатия клавиш в пределах N (где 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;
      }
    },
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...