toLocaleString 在 5 位数字后重置值

简介:我正在创建一个包含许多输入的表单,其中一些输入应该只采用整数值。这些输入有类int-val,我在我的 Js 中引用了它。


我将 int 输入设置为在每三个整数之后有一个逗号keyup。我已经成功地这样做了,但现在this.value在第四个字符后重置keyup,我不确定为什么。


努力:这是我的代码的样子:


function addComma(x) {

   return x.toLocaleString('en');

}


// add function to int inputs

$('.int-val').keyup(function (e) {

   let val = parseFloat(this.value);

   this.value = addComma(val);

   console.log(this.value);

}

在控制台中,“4500000”的输出是这样的:


4

45

450

4,500

4 // if adding a fifth character, this.value resets to the first character entered

事实证明,这比我预期的要困难。有没有更简单的方法来完成这个?


青春有我
浏览 117回答 1
1回答

莫回无

发生这种情况是因为您正在解析本地化数字4,500并且,不受支持,因此parseFloat丢弃不受支持的字符 ( the, ) 之后的所有内容。没有内置方法来解析本地化数字。对于您使用的这种特定本地化,您可以这样做 parseFloat(this.value.replace(/,/g,''));并且可以解决该问题。function addComma(x) {&nbsp; return x.toLocaleString('en');}// add function to int inputs$('.int-val').keyup(function(e) {&nbsp; let val = parseFloat(this.value.replace(/,/g, ''));&nbsp; this.value = addComma(val);&nbsp; console.log(this.value);})<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script><input type="text" class="int-val" />您仍然必须处理小数和空字符串。查看https://github.com/globalizejs/globalize以获得更强大的方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript