问题:
我最近被要求在我的使用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:
答案 0 :(得分:1)
input type="number"
只允许包含“floating point number”doesn't allow commas。
Some browsers接受包含小数点逗号的输入并将其转换为小数句点,具体取决于用户或页面的区域设置,但是它们中的大部分都不会这样做,因此最好避免使用{{1}如果你需要支持十进制逗号数字。