Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ввод чисел с 2-мя знаками после запятой (https://javascript.ru/forum/misc/78840-vvod-chisel-s-2-mya-znakami-posle-zapyatojj.html)

tai 12.11.2019 13:11

Ввод чисел с 2-мя знаками после запятой
 
Добрый день!
Подскажите как сделать ввод (в текстовое поле) только чисел с 2-мя знаками после запятой. Написал такой код:

$('body').on('keydown', '.input-class', function(e){
        var input = $(this);
        var oldVal = input.val();
        var regex = new RegExp(/^\d*(\.\d{0,2})?$/, 'g');

        setTimeout(function(){
            var newVal = input.val();

            if(!regex.test(newVal)){
                input.val(oldVal);
            }
        }, 0);
    });


Но есть проблема. Если использовать setTimeout, то при попытке ввода недопустимых символов появляется "моргание". Т.е. символ ставится, но сразу же удаляется. Если же setTimeout не использовать, то проверка идет не сразу и можно ввести одну букву, 2-е точки или 3 цифры после точки.

Как сделать корректное ограничение ввода?

Malleys 12.11.2019 13:27

tai, используй событие input

Событие keydown предназначено для отслеживания нажатия на клавишу, а не для отслеживания ввода.

Mikael86 29.11.2019 16:58

Плагин Numeral.js попробуй, мне помогло

SuperZen 29.11.2019 20:43

задача комплексная, а что будет если crtl+v )... и таких нюансов можно придумать достаточное кол-во...


Часовой пояс GMT +3, время: 03:27.