Убрать код страны из номера телефона

У меня имеется маска для ввода номера телефона, написана на 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' />

→ Ссылка