我有一个输入字段。用户输入一个数字。我需要使用代表数千(不是小数)的点正确格式化此数字 用户输入:5600 - >变成5.600(五千六百) 用户输入:56000 - >变成56.000 等
我需要在输入字段中正确格式化数字。
我有一个小提琴:http://jsfiddle.net/El4a/KPeBD/1059/
这个小提琴完美无缺,但是它使用角度数字滤波器,因此它用逗号表示格式化数字。但是我需要一个点符号。
所以我尝试用点手动替换逗号。
var listener = function() {
var value = $element.val().replace(/,/g, '') //delete all notations
var x = $element.val($filter('number')(value, 0)) //filter
$element.val(x).replace(/,/g, '.') //replace comma by dot
}
这不起作用。
然后我尝试使用locale cdn(可以在链接小提琴中看到)。 这似乎是最初创建的解决方案:
但是当添加下一个0时,它会翻转并执行:
我想我也必须改变以下行
var value = $element.val().replace(/,/g, '')
到
var value = $element.val().replace(/./g, '')
但输入字段完全无法使用。
希望有人为我找到解决方案!
答案 0 :(得分:0)
我已删除该指令,因为它对过滤该号码没有多大帮助。
我们可以使用angular filter ($filter)
。将代码更改为
myApp.filter('number', ['$filter', function ($filter) {
return function (input, symbol, fraction) {
if (input) {
var decimal = input.toString().split('.')[1],
value = input.toString().split('.')[0],
filtered = value.replace(/(?=(\d\d\d)$)/g, ".");
return (decimal) ? (fraction > 0 ? filtered + '.' + decimal.slice(0, fraction) : filtered) : filtered;
} else {
return 0
}
}
}])
抱歉,我删除了整个指令部分并更新了jsFiddle。
以下是更新后的Demo
答案 1 :(得分:0)
我忘了逃避该死的。炭:
如此改变
var value = $element.val().replace(/./g, '')
到
var value = $element.val().replace(/\./g, '')
让它发挥作用
花了48小时......