Skip to content

Commit b3b2380

Browse files
committed
fix #506 unify v-model listener behavior with/without filters
1 parent a1c6bcd commit b3b2380

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed

src/directives/model/text.js

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -47,35 +47,29 @@ module.exports = {
4747
// if the directive has filters, we need to
4848
// record cursor position and restore it after updating
4949
// the input with the filtered value.
50-
if (this.filters) {
51-
this.listener = function textInputListener () {
52-
if (cpLocked) return
53-
var charsOffset
54-
// some HTML5 input types throw error here
55-
try {
56-
// record how many chars from the end of input
57-
// the cursor was at
58-
charsOffset = el.value.length - el.selectionStart
59-
} catch (e) {}
60-
set()
61-
// force a value update, because in
62-
// certain cases the write filters output the same
63-
// result for different input values, and the Observer
64-
// set events won't be triggered.
65-
_.nextTick(function () {
66-
var newVal = self._watcher.value
67-
self.update(newVal)
68-
if (charsOffset != null) {
69-
var cursorPos = newVal.length - charsOffset
70-
el.setSelectionRange(cursorPos, cursorPos)
71-
}
72-
})
73-
}
74-
} else {
75-
this.listener = function textInputListener () {
76-
if (cpLocked) return
77-
set()
78-
}
50+
this.listener = function textInputListener () {
51+
if (cpLocked) return
52+
var charsOffset
53+
// some HTML5 input types throw error here
54+
try {
55+
// record how many chars from the end of input
56+
// the cursor was at
57+
charsOffset = el.value.length - el.selectionStart
58+
} catch (e) {}
59+
set()
60+
// force a value update, because in
61+
// certain cases the write filters output the same
62+
// result for different input values, and the Observer
63+
// set events won't be triggered.
64+
_.nextTick(function () {
65+
var newVal = self._watcher.value
66+
self.update(newVal)
67+
if (charsOffset != null) {
68+
var cursorPos =
69+
_.toString(newVal).length - charsOffset
70+
el.setSelectionRange(cursorPos, cursorPos)
71+
}
72+
})
7973
}
8074
this.event = lazy ? 'change' : 'input'
8175
_.on(el, this.event, this.listener)

0 commit comments

Comments
 (0)