我有一个简单的指令,可以阻止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();
}
});
}
};
});
答案 0 :(得分:4)
似乎event.keyCode
总是返回0
,所以一切都被忽略了。 charCode
已弃用keyCode
,which
和key
属性,建议改为使用which
,但尚未实施。
要解决此问题,请使用element.bind('keypress', function (event) {
if (event.which < 48 || event.which > 57) {
event.preventDefault();
}
});
,这似乎工作正常:
{{1}}
您应该考虑浏览器如何处理密钥代码:检查所有可能的属性名称,或者在AngularJS之前包含jQuery以规范化事件。
P.S。:小键盘键不起作用,用户可能不喜欢。我建议通过JSBin实用程序过滤输入,这将更像是Angular-way。