Слава Україні!

Цифровой ввод

Ограничение на ввод в поле только цифрами
18-го жовтня 2014, 6:10
Способы ниже только фильтруют ввод с клавиатуры. Они не сработают, если пользователь будет вводить данные с помощью мышки (через контекстное меню). Поэтому Вам может понадобиться более продвинутый способ отсеивания, который будет срабатывать каждый раз при изменении текста. В jQuery есть событие `.change` для отслеживания изменений текстового поля. К сожалению, оно срабатывает только тогда, когда поле теряет фокус. Также есть событие `.input`, но оно не работает в IE ниже 9-й версии, а в самой девятке немного глючит. Тем не менее, если поставить фильтрацию на все необходимые события, то можно добиться вполне нормального результата с помощью короткого кода:

    <script>
        $('#txtbox').bind("change keyup input click", function() {
            if (this.value.match(/[^0-9]/g)) {
                this.value = this.value.replace(/[^0-9]/g, '');
            }
        });
    </script>
Еще один вариант

    <script>
        $(function(){
            $('.number_dots').on('input', function(){
                this.value = this.value.replace(/^\.|[^\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
            });
        });
    </script>
Вариант с фильтрацией по коду нажатой клавиши

    <script>
        $(document).ready(function() {
            $("#txtboxToFilter").keydown(function(event) {
                // Разрешаем нажатие клавиш backspace, del, tab и esc
                if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 ||
                // Разрешаем выделение: Ctrl+A
                (event.keyCode == 65 && event.ctrlKey === true) ||
                // Разрешаем клавиши навигации: home, end, left, right
                (event.keyCode >= 35 && event.keyCode <= 39)) {
                    return;
                } else {
                // Запрещаем всё, кроме клавиш цифр на основной клавиатуре, а также Num-клавиатуре
                    if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
                        event.preventDefault();
                    }
                }
            });
        });
    </script>
В данном примере ввода только цифр используются не только коды цифр из основной клавиатуры, но и цифры на дополнительной, так называемой NUM-клавиатуры.

Важлива інформація

Міністерство оборони
України
з 24.02 по 20.04
втрати противника
орієнтовно склали:
941100 ( +950 ) особового складу
10677 ( +1 ) танків
22271 ( +5 ) бойових бронемашин
26649 ( +49 ) артилерійських систем
1368 ( +0 ) РСЗВ
1139 ( +0 ) засоби ППО
370 ( +0 ) літаків
335 ( +0 ) гелікоптерів
45274 ( +112 ) автомобільної техніки
28 ( +0 ) кораблі / катери
3148 ( +0 ) крилаті ракети
33240 ( +64 ) БПЛА
3859 ( +1 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) підводні човни