2
0
mirror of https://github.com/tenrok/maska.git synced 2026-06-11 18:02:27 +03:00

Now the masked symbol is shown immediately

This commit is contained in:
Alexander Shabunevich
2020-09-28 13:02:45 +03:00
parent bb62516640
commit 26234704f0
12 changed files with 32 additions and 21 deletions
+5
View File
@@ -44,6 +44,11 @@ function process (value, mask, tokens, masked = true) {
if (token.pattern.test(valueChar)) {
ret += tokenTransform(valueChar, token)
im++
// check next char
if (masked && mask[im] && !tokens[mask[im]]) {
ret += mask[im]
im++
}
}
iv++
} else if (token && token.repeat) {
+8 -5
View File
@@ -33,7 +33,7 @@ export default class Maska {
this.updateValue(el)
if (!el.dataset.maskInited) {
el.dataset.maskInited = true
el.addEventListener('input', evt => this.updateValue(evt.target))
el.addEventListener('input', evt => this.updateValue(evt.target, evt))
el.addEventListener('beforeinput', evt => this.beforeInput(evt))
}
}
@@ -42,24 +42,27 @@ export default class Maska {
destroy () {
for (let i = 0; i < this._el.length; i++) {
const el = findInputElement(this._el[i])
el.removeEventListener('input', evt => this.updateValue(evt.target))
el.removeEventListener('input', evt => this.updateValue(evt.target, evt))
el.removeEventListener('beforeinput', evt => this.beforeInput(evt))
delete el.dataset.mask
delete el.dataset.maskInited
}
}
updateValue (el) {
updateValue (el, evt) {
const wrongNum = el.type.match(/^number$/i) && el.validity.badInput
if ((!el.value && !wrongNum) || !el.dataset.mask) return
const position = el.selectionEnd
let position = el.selectionEnd
const oldValue = el.value
const digit = oldValue[position - 1]
el.value = mask(el.value, el.dataset.mask, this._opts.tokens)
if (evt && evt.inputType === 'insertText' && position === oldValue.length) {
position = el.value.length
}
fixInputSelection(el, position, digit)
if (el.value !== oldValue) {
el.dispatchEvent(event('input'))
el.dispatchEvent(event('input', (evt && evt.inputType) || null))
}
}
+4 -1
View File
@@ -1,8 +1,11 @@
/* global HTMLInputElement */
function event (name) {
function event (name, inputType = null) {
const event = document.createEvent('Event')
event.initEvent(name, true, true)
if (inputType) {
event.inputType = inputType
}
return event
}