Hi,
I’m trying to create a number input that will add thousand separator whenever the value on text input reach more than thousand with Observable and setValueWithOrigin, below is the code
function formatNumber(number, delimiter, decimalDelimiter){
var numberString = number.toString(),
splitNumber = numberString.split('.'),
splitFloats = '';
// Check if the number's precision is greater than the thousanths place.
// If so, build out the tail end of the formatted Number.
if(splitNumber[1] && splitNumber[1].length > 3) {
splitFloats = decimalDelimiter + number.toFixed(3).toString().split('.')[1];
}
return splitNumber[0].split( /(?=(?:\d{3})+$)/g ).join(delimiter) + splitFloats;
}
var Amt = Observable("0")
Amt.addSubscriber(function(obs, op, val, origin){
console.log("origin : "+origin)
if (origin == 12345) return
v = val.split(',').join('')
fnum = formatNumber(parseInt(v),',','.')
obs.setValueWithOrigin(fnum, 12345)
return
})
At first, when the input value is below 1000, the function is executed normally, but once the function start adding thousand separator, then it’s triggering infinite loop