Не удается проверить ввод [type = number] в Firefox с помощью AngularJS

Я использовал input[type=number]. В chrome этот ввод игнорирует любые символы (исключение e - как в спецификации w3c). Но в Firefox вы можете написать любой символ, и все в порядке.

Я написал директиву:

link: function (scope, element, attr, ngModelCtrl) {
        console.info('enter')
        function fromUser(text) {
            console.info(typeof text, typeof text === 'string')
            if (typeof text === 'string' && text) {
                var transformedInput = text.replace(/[^0-9]/g, '');

                if (transformedInput !== text) {
                    ngModelCtrl.$setViewValue(transformedInput);
                    ngModelCtrl.$render();
                }
                return transformedInput;
            }
            return undefined;
        }
        ngModelCtrl.$parsers.push(fromUser);
    }

Но это не работает в Firefox 52.7.3 (64-бит). Я не получил никакого символа в console.info. В следующем я меняю порядок $ parsers на:

ngModelCtrl.$parsers.unshift(fromUser);

У меня есть символ в console.info, но на выходе это не помогает. Затем я могу добавить обработчик (в примере - только демонстрация для символа 'e'):

onkeydown = "javascript: return event.keyCode == 69 ? false : true"

Но полей много, и я считаю, что это плохое решение. Сейчас все переписываю на input[type=text]. Но хочу использовать input[type=number]. Кто-нибудь может с этим помочь?

CodePen

какую версию Firefox вы использовали?

Aleksey Solovey 11.04.2018 16:49

52.7.3 (64-битный) debian (мой друг получил его на Mac)

Aleksey Makas 11.04.2018 17:03

Firefox 52 поддерживает тип ввода = "число", а также его проверка. Можете ли вы опубликовать свой код, который предположительно позволяет вам вводить в него символы?

Aleksey Solovey 11.04.2018 17:10

@AlekseySolovey ты пробовал? Я читал, что они начали поддерживать это в 2014 году, но я не понял, что они начинают поддерживать ...

Aleksey Makas 11.04.2018 17:18

@AlekseySolovey codepen.io/Muskos/pen/NYJJbP

Aleksey Makas 11.04.2018 17:28

Это немного неработающий код. В вашем примере был ng-model = "number", я думаю, вам нужен был ng-model = "result". Прекрасно работает без директивы (которая также не принимает . / десятичные знаки)

Aleksey Solovey 11.04.2018 17:32

Ты серьезно? Вы пробовали? Это не зависит от определения переменной. В chrome вы не можете вводить char, в FF вы можете. Может я плохо объяснил ситуацию?

Aleksey Makas 12.04.2018 09:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
84
0

Другие вопросы по теме