Skip to content

Commit 63da54d

Browse files
committed
fix v-on number keyCode support
1 parent 59dca12 commit 63da54d

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

src/compiler/events.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ function genHandler (
5353
}
5454

5555
function genKeyFilter (key: string): string {
56-
const code = keyCodes[key]
56+
const code = keyCodes[key] || JSON.stringify(key)
5757
if (Array.isArray(code)) {
58-
return `if(${code.map(c => `$event.keyCode!==${c}`).join('&&')})return;`
58+
return `if(${code.map(c => `$event.keyCode!=${c}`).join('&&')})return;`
5959
} else {
60-
return `if($event.keyCode!==${code})return;`
60+
return `if($event.keyCode!=${code})return;`
6161
}
6262
}

test/unit/features/directives/on.spec.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,30 @@ describe('Directive v-on', () => {
102102
expect(callOrder.toString()).toBe('1,2')
103103
})
104104

105+
it('should support keyCode', () => {
106+
vm = new Vue({
107+
el,
108+
template: `<input @keyup.enter="foo">`,
109+
methods: { foo: spy }
110+
})
111+
triggerEvent(vm.$el, 'keyup', e => {
112+
e.keyCode = 13
113+
})
114+
expect(spy).toHaveBeenCalled()
115+
})
116+
117+
it('should support number keyCode', () => {
118+
vm = new Vue({
119+
el,
120+
template: `<input @keyup.13="foo">`,
121+
methods: { foo: spy }
122+
})
123+
triggerEvent(vm.$el, 'keyup', e => {
124+
e.keyCode = 13
125+
})
126+
expect(spy).toHaveBeenCalled()
127+
})
128+
105129
it('should bind to a child component', () => {
106130
Vue.component('bar', {
107131
template: '<span>Hello</span>'

test/unit/modules/compiler/codegen.spec.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,17 @@ describe('codegen', () => {
216216
it('generate events with keycode', () => {
217217
assertCodegen(
218218
'<input @input.enter="onInput">',
219-
`with(this){return _h(_e('input',{on:{"input":function($event){if($event.keyCode!==13)return;onInput($event)}}}))}`
219+
`with(this){return _h(_e('input',{on:{"input":function($event){if($event.keyCode!=13)return;onInput($event)}}}))}`
220220
)
221221
// multiple keycodes (delete)
222222
assertCodegen(
223223
'<input @input.delete="onInput">',
224-
`with(this){return _h(_e('input',{on:{"input":function($event){if($event.keyCode!==8&&$event.keyCode!==46)return;onInput($event)}}}))}`
224+
`with(this){return _h(_e('input',{on:{"input":function($event){if($event.keyCode!=8&&$event.keyCode!=46)return;onInput($event)}}}))}`
225+
)
226+
// number keycode
227+
assertCodegen(
228+
'<input @input.13="onInput">',
229+
`with(this){return _h(_e('input',{on:{"input":function($event){if($event.keyCode!="13")return;onInput($event)}}}))}`
225230
)
226231
})
227232

0 commit comments

Comments
 (0)