mirror of
https://github.com/tenrok/maska.git
synced 2026-05-30 15:24:06 +03:00
Some fixes for number input type
This commit is contained in:
+10
-1
@@ -34,6 +34,7 @@ export default class Maska {
|
||||
if (!el.dataset.maskInited) {
|
||||
el.dataset.maskInited = true
|
||||
el.addEventListener('input', evt => this.updateValue(evt.target))
|
||||
el.addEventListener('beforeinput', evt => this.beforeInput(evt))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,13 +43,15 @@ export default class Maska {
|
||||
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('beforeinput', evt => this.beforeInput(evt))
|
||||
delete el.dataset.mask
|
||||
delete el.dataset.maskInited
|
||||
}
|
||||
}
|
||||
|
||||
updateValue (el) {
|
||||
if (!el.value || !el.dataset.mask) return
|
||||
const wrongNum = el.type.match(/^number$/i) && el.validity.badInput
|
||||
if ((!el.value && !wrongNum) || !el.dataset.mask) return
|
||||
|
||||
const position = el.selectionEnd
|
||||
const oldValue = el.value
|
||||
@@ -59,4 +62,10 @@ export default class Maska {
|
||||
el.dispatchEvent(event('input'))
|
||||
}
|
||||
}
|
||||
|
||||
beforeInput (e) {
|
||||
if (e.target.type.match(/^number$/i) && e.data && isNaN(e.target.value + e.data)) {
|
||||
e.preventDefault()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -16,7 +16,8 @@ function fixInputSelection (el, position, digit) {
|
||||
position++
|
||||
}
|
||||
|
||||
if (el === document.activeElement) {
|
||||
const selectionRange = (el.type && el.type.match(/^(text|search|password|tel|url)$/i) || !el.type)
|
||||
if (selectionRange && el === document.activeElement) {
|
||||
el.setSelectionRange(position, position)
|
||||
setTimeout(function () {
|
||||
el.setSelectionRange(position, position)
|
||||
|
||||
Reference in New Issue
Block a user