У меня есть поле ввода. Пользователь вводит число. Мне нужно, чтобы этот номер был правильно отформатирован с точками, представляющими входные данные тысяч (не десятичных): 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
}
Это не сработало.
Затем я попытался использовать локаль cdn (как видно из связанной скрипты). Казалось, что это решение сначала создало:
Но когда добавляется следующий 0, он переворачивается и делает:
Я решил, что мне также пришлось изменить следующую строку
var value = $element.val().replace(/,/g, '')
в
var value = $element.val().replace(/./g, '')
но тогда поле ввода полностью непригодно.
Надеюсь, у кого-то есть решение для меня!
OMG, я наконец нашел это...
Я забыл сбежать от проклятого. голец:
поэтому изменение
var value = $element.val().replace(/./g, '')
в
var value = $element.val().replace(/\./g, '')
заставил его работать
48 часов хорошо проведенных...
Я удалил директиву, так как это не очень полезно для фильтрации числа.
мы можем использовать 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.
Вот обновленная демоверсия