允许用户在textbox
中插入最多25个值。
i.e. 1234567890123456789012345
在文本框的更改事件中,我需要将其转换为数值以执行数值运算,然后需要显示相同的输入值,千位分隔符和2位小数。
我尝试了以下代码:
Number($('#textbox1').val()).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
parseInt($('#textbox1').val(), 10).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
两者都给了我以下输出
1.2,345,679,801,234,568e+21
预期产出: -
1,234,567,890,123,456,789,012,345.00
答案 0 :(得分:0)
尝试使用autoNumeric js。找到它here
答案 1 :(得分:0)
function addCommas(nStr) {
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2 + '.00';
}
答案 2 :(得分:0)
从数字的角度来看,仍然无法在JavaScript上获得任何解决方案,因此我将值发布到服务器端并获得JSon结果。
但为了显示目的,我终于做到了:
function ChangeAmountFormat(target) {
var $this = $(target);
var num = $this.val().replace(/,/g, '').replace(/(\s)/g, '');
var decimalPointDeleted = '';
if (lastValue.length > 0 && lastValue.indexOf('.') > 0 && num.indexOf('.') < 0) {
decimalPointDeleted = 'y';
}
if (num.indexOf('.') >= 0) {
var numSplitValues = num.split('.');
num = numSplitValues[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
num += (num.length > 0 ? ('.' + numSplitValues[1]) : '');
}
else {
if (decimalPointDeleted == 'y' && num.toString().substring((num.length - 2), num.length) == '00') {
var tempNum = num.toString().substring(0, (num.length - 2));
num = tempNum + '.' + num.toString().substring((num.length - 2), num.length);
}
else {
num = num + (num.length > 0 ? '.00' : '');
}
num = num.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
$this.val(num);
}
这里还有一些东西可以处理。请忽略。