Javascript 按键控设置金额格式
我想格式化keyup javascript事件的金额。我需要这样的结果:Javascript 按键控设置金额格式,javascript,onkeyup,Javascript,Onkeyup,我想格式化keyup javascript事件的金额。我需要这样的结果: function formatNumber(numberString) { var commaIndex = numberString.indexOf(','); var int = numberString; var frac = ''; if (~commaIndex) { int = numberString.slice(0, commaIndex);
function formatNumber(numberString) {
var commaIndex = numberString.indexOf(',');
var int = numberString;
var frac = '';
if (~commaIndex) {
int = numberString.slice(0, commaIndex);
frac = ',' + numberString.slice(commaIndex + 1);
}
var firstSpanLength = int.length % 3;
var firstSpan = int.slice(0, firstSpanLength);
var result = [];
if (firstSpan) {
result.push(firstSpan);
}
int = int.slice(firstSpanLength);
var restSpans = int.match(/\d{3}/g);
if (restSpans) {
result = result.concat(restSpans);
return result.join(' ') + frac;
}
return firstSpan + frac;
}
formatNumber('1234567890,12'); // "1 234 567 890,12"
- 100>100
- 1000>1000
- 100000000>100000
- 1000,12>1000,12
你能帮我吗 你需要这样的东西:
function formatNumber(numberString) {
var commaIndex = numberString.indexOf(',');
var int = numberString;
var frac = '';
if (~commaIndex) {
int = numberString.slice(0, commaIndex);
frac = ',' + numberString.slice(commaIndex + 1);
}
var firstSpanLength = int.length % 3;
var firstSpan = int.slice(0, firstSpanLength);
var result = [];
if (firstSpan) {
result.push(firstSpan);
}
int = int.slice(firstSpanLength);
var restSpans = int.match(/\d{3}/g);
if (restSpans) {
result = result.concat(restSpans);
return result.join(' ') + frac;
}
return firstSpan + frac;
}
formatNumber('1234567890,12'); // "1 234 567 890,12"
将它与事件侦听器一起使用,并将表示数字的字符串发送到此函数,它将返回所需格式的字符串
input.onkeyup = function () {
input.value = input.value.replace(/\d+(?:,\d+)?/g, formatNumber);
};
下面是一个有趣的古怪格式函数:
函数格式编号{
变量部分=s.split(/,/)
,间距=零件[0]
.split(“”).reverse().join(“”)//反转字符串。
.match(//\d{1,3}/g).join(“”)//用空格连接3位数字的组。
.split(“”).reverse().join(“”);//将其反向。
返回空格+(部分[1]?',“+部分[1]:”;//添加小数部分。
}
您可以通过在纯JavaScript中使用或使用jQuery中的函数将其附加到元素的“keyup”事件,例如:
$('.my input')。在('keyup',function()上{
var$this=$(this);
$this.val(formatNumber($this.val());
});
我尝试了我在stackoverflow站点中找到的功能,但结果是NaNjquery、keyup、trim:)这些是让你继续的关键词,因为我认为包括我在内的任何人都不会为完整答案而烦恼。这是关于格式的问题,是关于事件处理的问题吗?你说你试过另一个答案。你到底试了什么?你是否做了任何改变以适应你的情况?除了另一个答案的副本,你还试过别的吗?jQuery解决方案行吗,还是需要纯JavaScript?@whitebox:Oops。我测试过正则表达式,但不是全部。现在应该可以工作了。它不允许.00并且允许多个“,”@BantyRoy:这段代码不打算关注
。你可能已经注意到,数字的格式是不同的,
是本例中的小数点,通常表示。是千分之一。