Dynamic mask change issue fixed
parent
b7a944f1c6
commit
115f52d5ab
|
@ -31,57 +31,15 @@ export default {
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
mask(newMask, oldMask) {
|
||||||
|
if (oldMask !== newMask) {
|
||||||
|
this.initMask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.tests = [];
|
this.initMask();
|
||||||
this.partialPosition = this.mask.length;
|
|
||||||
this.len = this.mask.length;
|
|
||||||
this.firstNonMaskPos = null;
|
|
||||||
this.defs = {
|
|
||||||
9: '[0-9]',
|
|
||||||
a: '[A-Za-z]',
|
|
||||||
'*': '[A-Za-z0-9]'
|
|
||||||
};
|
|
||||||
|
|
||||||
let ua = DomHandler.getUserAgent();
|
|
||||||
|
|
||||||
this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);
|
|
||||||
|
|
||||||
let maskTokens = this.mask.split('');
|
|
||||||
|
|
||||||
for (let i = 0; i < maskTokens.length; i++) {
|
|
||||||
let c = maskTokens[i];
|
|
||||||
|
|
||||||
if (c === '?') {
|
|
||||||
this.len--;
|
|
||||||
this.partialPosition = i;
|
|
||||||
} else if (this.defs[c]) {
|
|
||||||
this.tests.push(new RegExp(this.defs[c]));
|
|
||||||
|
|
||||||
if (this.firstNonMaskPos === null) {
|
|
||||||
this.firstNonMaskPos = this.tests.length - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i < this.partialPosition) {
|
|
||||||
this.lastRequiredNonMaskPos = this.tests.length - 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.tests.push(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.buffer = [];
|
|
||||||
|
|
||||||
for (let i = 0; i < maskTokens.length; i++) {
|
|
||||||
let c = maskTokens[i];
|
|
||||||
|
|
||||||
if (c !== '?') {
|
|
||||||
if (this.defs[c]) this.buffer.push(this.getPlaceholder(i));
|
|
||||||
else this.buffer.push(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.defaultBuffer = this.buffer.join('');
|
|
||||||
this.updateValue(false);
|
|
||||||
},
|
},
|
||||||
updated() {
|
updated() {
|
||||||
if (this.isValueUpdated()) {
|
if (this.isValueUpdated()) {
|
||||||
|
@ -500,6 +458,58 @@ export default {
|
||||||
this.focusText = this.$el.value;
|
this.focusText = this.$el.value;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
initMask() {
|
||||||
|
this.tests = [];
|
||||||
|
this.partialPosition = this.mask.length;
|
||||||
|
this.len = this.mask.length;
|
||||||
|
this.firstNonMaskPos = null;
|
||||||
|
this.defs = {
|
||||||
|
9: '[0-9]',
|
||||||
|
a: '[A-Za-z]',
|
||||||
|
'*': '[A-Za-z0-9]'
|
||||||
|
};
|
||||||
|
|
||||||
|
let ua = DomHandler.getUserAgent();
|
||||||
|
|
||||||
|
this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);
|
||||||
|
|
||||||
|
let maskTokens = this.mask.split('');
|
||||||
|
|
||||||
|
for (let i = 0; i < maskTokens.length; i++) {
|
||||||
|
let c = maskTokens[i];
|
||||||
|
|
||||||
|
if (c === '?') {
|
||||||
|
this.len--;
|
||||||
|
this.partialPosition = i;
|
||||||
|
} else if (this.defs[c]) {
|
||||||
|
this.tests.push(new RegExp(this.defs[c]));
|
||||||
|
|
||||||
|
if (this.firstNonMaskPos === null) {
|
||||||
|
this.firstNonMaskPos = this.tests.length - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < this.partialPosition) {
|
||||||
|
this.lastRequiredNonMaskPos = this.tests.length - 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.tests.push(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.buffer = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < maskTokens.length; i++) {
|
||||||
|
let c = maskTokens[i];
|
||||||
|
|
||||||
|
if (c !== '?') {
|
||||||
|
if (this.defs[c]) this.buffer.push(this.getPlaceholder(i));
|
||||||
|
else this.buffer.push(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.defaultBuffer = this.buffer.join('');
|
||||||
|
this.updateValue(false);
|
||||||
|
},
|
||||||
isValueUpdated() {
|
isValueUpdated() {
|
||||||
return this.unmask ? this.modelValue != this.getUnmaskedValue() : this.defaultBuffer !== this.$el.value && this.$el.value !== this.modelValue;
|
return this.unmask ? this.modelValue != this.getUnmaskedValue() : this.defaultBuffer !== this.$el.value && this.$el.value !== this.modelValue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue