Маска только для телефона, перекидывание курсора к началу ввода, как сделать?

Всем привет.

Нашел простой скрипт маски для телефона, нужна только для телефона, не стал качать большие файлы, где разные маски есть.
Нужна небольшая доработка маски, если ставить курсор когда вводим в поле импут, то можно поставить в самом конце пунктир, а как сделать чтобы его перекидывало к началу скобки +7 (
Доработать чтоб нельзя было в конце ставить пунктир +7 (___) ___-_____| , ну или если ставиться то перекидывало к началу скобкам где вводим.
Ну или сделать так, нажимаем и появляется +7 и далее пишем и подставляется сами скобки (___), так в конце пунктир не поставить, ибо начало будет от +7 идти.

Рабочая схема
https://jsfiddle.net/7reby9w6/1/
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Rerurk
так пойдет?
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input id="inputPhone" value="+7(___)___-__-__" >
<script>
    let inputPhone=document.getElementById("inputPhone");
    inputPhone.oninput=()=>phoneMask(inputPhone)
    function phoneMask(inputEl) {
        let patStringArr = "+7(___)___-__-__".split('');
        let arrPush = [3, 4, 5, 7, 8, 9, 11, 12, 14, 15]
        let val = inputEl.value;
        let arr = val.replace(/\D+/g, "").split('').splice(1);
        let n;
        let ni;
        arr.forEach((s, i) => {
            n = arrPush[i];
            patStringArr[n] = s
            ni = i
        });
        arr.length < 10 ? inputEl.style.color = 'red' : inputEl.style.color = 'green';
        inputEl.value = patStringArr.join('');
        n ? inputEl.setSelectionRange(n + 1, n + 1) : inputEl.setSelectionRange(17, 17)
    }
</script>
</body>
</html>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
04 дек. 2020, в 18:23
100 руб./в час
04 дек. 2020, в 17:59
100 руб./за проект
04 дек. 2020, в 16:45
50000 руб./за проект