Skip to content

Commit a06c602

Browse files
committed
tests for jQuery change event support
1 parent 44b90bd commit a06c602

File tree

5 files changed

+38
-2
lines changed

5 files changed

+38
-2
lines changed

.jshintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"globals": {
1616
"console": true,
1717
"DocumentFragment": true,
18-
"WebkitMutationObserver": true
18+
"WebkitMutationObserver": true,
19+
"jQuery": true
1920
}
2021
}

gruntfile.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ module.exports = function (grunt) {
4040
options: {
4141
frameworks: ['jasmine', 'commonjs'],
4242
files: [
43+
'test/unit/lib/jquery.js',
4344
'src/**/*.js',
4445
'test/unit/lib/indoc_patch.js',
4546
'test/unit/specs/**/*.js'

src/directives/model/default.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var _ = require('../../util')
2+
var hasjQuery = typeof jQuery === 'function'
23

34
module.exports = {
45

@@ -80,7 +81,10 @@ module.exports = {
8081

8182
this.event = lazy ? 'change' : 'input'
8283
_.on(el, this.event, this.listener)
83-
if (typeof(jQuery) === 'function') {
84+
85+
// support jQuery change event, jQuery.trigger() doesn't
86+
// trigger native change event in some cases
87+
if (hasjQuery) {
8488
jQuery(el).on('change', this.listener)
8589
}
8690

@@ -116,6 +120,9 @@ module.exports = {
116120
unbind: function () {
117121
var el = this.el
118122
_.off(el, this.event, this.listener)
123+
if (hasjQuery) {
124+
jQuery(el).off('change', this.listener)
125+
}
119126
_.off(el,'compositionstart', this.cpLock)
120127
_.off(el,'compositionend', this.cpUnlock)
121128
if (this.onCut) {

test/unit/lib/jquery.js

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/unit/specs/directives/model_spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,5 +569,28 @@ if (_.inBrowser) {
569569
expect(_.warn).toHaveBeenCalled()
570570
})
571571

572+
it('support jQuery change event', function (done) {
573+
var vm = new Vue({
574+
el: el,
575+
data: {
576+
test: 'b'
577+
},
578+
template: '<input v-model="test">'
579+
})
580+
expect(el.firstChild.value).toBe('b')
581+
vm.test = 'a'
582+
_.nextTick(function () {
583+
expect(el.firstChild.value).toBe('a')
584+
el.firstChild.value = 'c'
585+
jQuery(el.firstChild).trigger('change')
586+
expect(vm.test).toBe('c')
587+
vm._directives[0].unbind()
588+
el.firstChild.value = 'd'
589+
jQuery(el.firstChild).trigger('change')
590+
expect(vm.test).toBe('c')
591+
done()
592+
})
593+
})
594+
572595
})
573596
}

0 commit comments

Comments
 (0)