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

Всем привет.

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

Рабочая схема
https://jsfiddle.net/7reby9w6/1/
  • Вопрос задан
  • 1516 просмотров
Пригласить эксперта
Ответы на вопрос 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>
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы