Изменить функцию JS

D
На сайте с 28.06.2008
Offline
1101
453

Прошу помочь адаптировать найденную функцию на JS под себя

window.addEventListener("DOMContentLoaded", function() {
    [].forEach.call( document.querySelectorAll('.tel'), function(input) {
    var keyCode;
    function mask(event) {
        event.keyCode && (keyCode = event.keyCode);
        var pos = this.selectionStart;
        if (pos < 3) event.preventDefault();
        var matrix = "+7 (___) ___ ____",
            i = 0,
            def = matrix.replace(/\D/g, ""),
            val = this.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, this.value.length).replace(/_+/g,
            function(a) {
                return "\\d{1," + a.length + "}"
            }).replace(/[+()]/g, "\\$&");
        reg = new RegExp("^" + reg + "$");
        if (!reg.test(this.value) || this.value.length < 5 || keyCode > 47 && keyCode < 58) this.value = new_value;
        if (event.type == "blur" && this.value.length < 5)  this.value = ""
    }

    input.addEventListener("input", mask, false);
    input.addEventListener("focus", mask, false);
    input.addEventListener("blur", mask, false);
    input.addEventListener("keydown", mask, false)

  });

});

Нужно 2 изменения:

1. дать юзеру вводить свой префикс страны (сейчас по умолчанию 7)

2. если юзер ввел менее 11 цифр, выводить предупреждение. Лучше даже сразу его вывести над полем ввода, типа "введите 11 цирф" и убирать его как только введена последняя

W1
На сайте с 22.01.2021
Offline
286
#1

Специально для тех, кто не умеет или не хочет делать собственные велосипеды, всё уже сделано:
https://github.com/RobinHerbots/Inputmask

А те, кто не умеет, но хочет, – пробуют и тренируются.

GitHub - RobinHerbots/Inputmask: Input Mask plugin
GitHub - RobinHerbots/Inputmask: Input Mask plugin
  • RobinHerbots
  • github.com
The Inputmask has a very permissive license and this will stay that way. But when you use the Inputmask in a commercial setting, be so honest to make a small donation. This will be appreciated very much. Inputmask is a javascript library that creates an input mask. Inputmask can run against vanilla javascript, jQuery, and jqlite. An inputmask...
Мой форум - https://webinfo.guru –Там я всегда на связи

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий