Убрать код страны из номера телефона
У меня имеется маска для ввода номера телефона, написана на JS (код взял из интернета)
document.addEventListener('input', e => {
if (e.target.classList.contains('tel')) {
var keyCode
var pos = e.target.selectionStart
if (pos < 3) e.preventDefault()
var matrix = '+7 (___) ___ ____',
i = 0,
def = matrix.replace(/\D/g, ''),
val = e.target.value.replace(/\D/g, ''),
new_value = matrix.replace(/[_\d]/g, function (a) {
return i < val.length ? val.charAt(i++) || def.charAt(i) : a
})
i = new_value.indexOf('_')
if (i != -1) {
i < 5 && (i = 3)
new_value = new_value.slice(0, i)
}
var reg = matrix.substr(0, e.target.value.length).replace(/_+/g,
function (a) {
return '\\d{1,' + a.length + '}'
}).replace(/[+()]/g, '\\$&')
reg = new RegExp('^' + reg + '$')
if (!reg.test(e.target.value) ||
e.target.value.length < 5 ||
keyCode > 47 && keyCode < 58)
e.target.value = new_value
if (e.type == 'blur' && e.target.value.length < 5)
e.target.value = ''
}
})
Сейчас необходимо её изменить, чтобы ввод шёл без кода страны в формате (___) ___ ____, все варианты, что находил не работают корректно
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
чтобы ввод шёл без кода страны в формате
(___) ___ ____
Предложу такой вариант...
// (___) ___ ____
test.addEventListener('input', e => {
let a = e.target.value.match(/\d+/g) ?? [];
const v = a.join('').slice(-10)
a = [
v.slice(0, 3),
v.slice(3, 6),
v.slice(6, 10),
].filter(v => v)
if (a[0] && v.length > 3) a[0] = `(${a[0]})`
e.target.value = a.join(' ')
})
<input id='test' />