Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 按键事件应该在FF上的角度指令中工作吗?_Angularjs_Firefox_Angularjs Directive - Fatal编程技术网

Angularjs 按键事件应该在FF上的角度指令中工作吗?

Angularjs 按键事件应该在FF上的角度指令中工作吗?,angularjs,firefox,angularjs-directive,Angularjs,Firefox,Angularjs Directive,我有一个简单的指令,防止在input[type=“number”]框中输入非数字项。它可以在Chrome中使用,但不能在Firefox中使用。在FF中,不允许任何输入,不仅仅是非数字字符。有人知道为什么吗?还有简单的选择吗 validationModule.directive('naturalNumber', function () { return { link: function (scope, element) { element.bind

我有一个简单的指令,防止在
input[type=“number”]
框中输入非数字项。它可以在Chrome中使用,但不能在Firefox中使用。在FF中,不允许任何输入,不仅仅是非数字字符。有人知道为什么吗?还有简单的选择吗

validationModule.directive('naturalNumber', function () {
    return {
        link: function (scope, element) {

            element.bind('keypress', function (event) {
                if (event.keyCode < 48 || event.keyCode > 57) {
                    event.preventDefault();
                }
            });
        }
    };
});
validationModule.directive('naturalNumber',function(){
返回{
链接:功能(范围、元素){
元素绑定('keypress',函数(事件){
如果(event.keyCode<48 | | event.keyCode>57){
event.preventDefault();
}
});
}
};
});

似乎
event.keyCode
总是返回
0
,所以一切都被忽略了。不推荐使用
charCode
keyCode
属性,建议使用
key
,但尚未实施

要解决此问题,请使用
哪个
,它似乎工作正常:

element.bind('keypress', function (event) {
    if (event.which < 48 || event.which > 57) {
      event.preventDefault();
    }
});
element.bind('keypress',函数(事件){
if(event.which<48 | | event.which>57){
event.preventDefault();
}
});

您可能应该考虑浏览器如何处理关键代码:检查所有可能的属性名,或者在angurjs之前包含jQuery来规范事件。


p.S.:numpad键不起作用,用户可能不喜欢。我建议通过实用程序过滤输入,这将是一种更具角度的方式。

似乎
event.keyCode
总是返回
0
,因此所有内容都被忽略。不推荐使用
charCode
keyCode
属性,建议使用
key
,但尚未实施

要解决此问题,请使用
哪个
,它似乎工作正常:

element.bind('keypress', function (event) {
    if (event.which < 48 || event.which > 57) {
      event.preventDefault();
    }
});
element.bind('keypress',函数(事件){
if(event.which<48 | | event.which>57){
event.preventDefault();
}
});

您可能应该考虑浏览器如何处理关键代码:检查所有可能的属性名,或者在angurjs之前包含jQuery来规范事件。


p.S.:numpad键不起作用,用户可能不喜欢。我建议通过实用程序过滤输入,这将更具角度。

你能在Fiddle/Plunker中发布示例吗?你能在Fiddle/Plunker中发布示例吗?
ngModelController
的问题是它不能在
输入[type=“number”]
上工作。非数字键会被浏览器吃掉,永远不会进入解析器。
ngModelController
的问题在于它不能在
输入[type=“number”]
上工作。非数字键会被浏览器吃掉,永远不会到达解析器。