Можно ли обнаружить только одно событие между onkeyup и onpaste? - PullRequest
1 голос
/ 26 сентября 2019

Существует один <input> элемент.Я добавил обработчик, который является директивой Vue для прослушивания события keyup и вставки, например @keyup and @paste.Я хотел только onPaste обнаружение события, когда я вставил что-то.Но это было обнаружено ими обоими.Можно ли обнаружить только событие вставки?и как?

<div id="app">
  <input type="text" @keyup="keyup" @paste="onPaste">
</div>
new Vue({
  el:'#app',
  methods: {
    onPaste: function () {
        console.log('paste');
    },
    keyup: function () {
        console.log('keyup');
    },
  }
});

1 Ответ

1 голос
/ 26 сентября 2019

Позвольте нам сначала установить некоторые основные принципы, чтобы мы могли продолжить работу над вашим вопросом:

Создание основ HTML-событий Native Event

onpaste событие обычно вызывается пользователями влюбой из этих двух способов:

  1. Пользователь нажал CTRL + V кнопки (keydown + keyup HTML-события запускаются для каждой нажатой кнопки
  2. Правая кнопка мыши Щелкните, чтобы открыть контекст браузераи выберите опцию вставки из него на входе (contextmenu HTML-событие запускается)

Vue.js

Встроенный Vue.jsСлушатели событий, которые вы можете прослушивать для любых собственных HTML-событий. Если вы хотите слушать только HTML-событие onpaste, вам просто нужно прослушать только это событие с @paste, как вы делали выше.

Непонятная мотивация

Попытка изменить собственное поведение браузера, то есть то, что событие paste не будет состоять из событий keydown / keyup / contextmenu, просто невозможно, есливы пытаетесь работать с родными браузерамиHTML API.Если вы решите создать собственную настраиваемую логику для вставки и запретить настройку по умолчанию, которая зависит от вас, но, честно говоря, я действительно не понимаю, что побудило бы вас сделать такую ​​вещь, поскольку собственные события HTML браузера делают именно то, что им нужнок.

Главный вопрос, который, я полагаю, вам нужно задать себе - это то, что вы пытаетесь достичь?какое ожидаемое поведение или проблему вы пытаетесь решить в настоящее время.Разъяснив это, вы можете задать другой вопрос и получить более точный ответ, который может помочь вам в продвижении ваших текущих работ.Удачи.

...