无法使用AngularJS验证输入[type = number]

时间:2018-04-11 14:42:40

标签: javascript angularjs html5 validation firefox

我使用了input[type=number]。在chrome中,这个输入会忽略任何类型的char(例外e - 就像在w3c规范中一样)。但是在Firefox中你可以编写任何字符,一切都很好。

我写了指令:

link: function (scope, element, attr, ngModelCtrl) {
        console.log('enter')
        function fromUser(text) {
            console.log(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.log中没有得到任何符号。 接下来,我将$ parsers命令更改为:

ngModelCtrl.$parsers.unshift(fromUser);

我在console.log中有符号,但在输出中没有帮助。 接下来,我可以添加处理程序(在示例中 - 仅为'e'符号演示):

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

但是有很多领域,我认为这是一个糟糕的解决方案。 现在,我用input[type=text]重写所有内容。但我想使用input[type=number]。有人可以帮忙吗?

CodePen

0 个答案:

没有答案