Переглянути джерело

fix(v-on): avoid events with empty keyCode (autocomplete) (#11326)

Mattia Trapani 5 роки тому
батько
коміт
c6d7a6fce7

+ 1 - 0
src/core/instance/render-helpers/check-keycodes.js

@@ -31,4 +31,5 @@ export function checkKeyCodes (
   } else if (eventKeyName) {
     return hyphenate(eventKeyName) !== key
   }
+  return eventKeyCode === undefined
 }

+ 11 - 0
test/unit/features/directives/on.spec.js

@@ -976,6 +976,17 @@ describe('Directive v-on', () => {
     expect(value).toBe(1)
   })
 
+  it('should not execute callback if modifiers are present', () => {
+    vm = new Vue({
+      el,
+      template: '<input @keyup.?="foo">',
+      methods: { foo: spy }
+    })
+    // simulating autocomplete event (Event object with type keyup but without keyCode)
+    triggerEvent(vm.$el, 'keyup')
+    expect(spy.calls.count()).toBe(0)
+  })
+
   describe('dynamic arguments', () => {
     it('basic', done => {
       const spy = jasmine.createSpy()