问题:
我最近被要求在使用 angular 构建的 spa 应用程序的字段中插入数字时将键盘句点替换为逗号的功能。我决定采用指令方法,以便将来能够轻松重用它并取得了部分成功,但它仅适用于
input type="text"
在尝试相同的解决方案时
input type="number"
该字段被重置,我收到以下错误:
ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.js:3501 指定的值“12”不是有效数字。该值必须与以下正则表达式匹配:-?(\d+|\d+.\d+|.\d+)([eE][-+]?\d+)?
但是,例如,当我键入时,12,
不会引发错误。
关于为什么以及如何让它在数字输入上工作的任何想法?
代码:
'use strict';
myApp.directive('replaceKeypadComma', function() {
return {
restrict: 'A',
link: function($scope, element, attrs, controller) {
element.on('keydown', function(event) {
if (event.keyCode == 110) {
element.val(element.val() + ',');
event.preventDefault();
}
});
}
}
});
使用文本输入工作的 Plunker:
https://plnkr.co/edit/hBThZOI1T4rk3cbwRscq
带有数字输入的破碎 Plunker: