All infos - Замена символов при вводе javascript
30
июнь

Замена символов при вводе javascript

Для отслеживание изменеий возможно использовать события клавиатуры:

keydown, keyup, keypress, input...

keypress устарело, его использование не рекомендуется.

keydown срабатывает до  вставки символа в элемент, потому сложно изменить при нажатии в этом событии.

keyup подходит, но при быстром нажатии на клавиши он не успевал срабатывать и пропускает некоторые символы.

Этот пример использования события input.

 

 Функция обрабатывающая событие, запрещает вставку если исключается по регулярному выражению, ограничивает длинну ввода. В зависимости от параметров: вместо английского ставит русский символ и наоборот, возвращает в вверхнем регистре.

ParametrizedInput: function (e, t, regexp, maxlength, upper, translate) {
            let textExist = t.value.length === 0 ? t.value : t.value.substring(0, t.value.length - 1);
            let charInput = t.value.substring(textExist.length);
            if (ft.IsServiceKey(e.keyCode)) return false;// 'ft' - внутренняя переменная
            if (e.ctrlKey === true) return false;
            
            if (regexp.test(charInput) || textExist.length === maxlength) {
                e.preventDefault();
                t.value = textExist;
                return false;
            }

            if (upper) {
                charInput = charInput.toUpperCase();
            }
            if (translate === "ru") {
                charInput = ft.EngCharToCyrillic(charInput);
            }
            else if (translate === "eng") {
                charInput = ft.CyrillicCharToEng(charInput);
            }
            t.value = textExist + charInput;
        },

Подписание на событие "input": 

$(document).ready(function(){
   $('.ftsroms').on('input', function (e) { ft.input.ParametrizedInput(e, this, /[^0-9a-zA-Zа-яА-Я -]/, 10, false, "none"); });
   $('.ftnmoms').on('input', function (e) { ft.input.ParametrizedInput(e, this, /[^0-9]/, 16, false, "none"); });
   $('.ftfio').on('input', function (e) { ft.input.ParametrizedInput(e, this, /[^a-zA-Zа-яА-Я -]/, 40, true, "ru") });
}

Share this post