为了账号安全,请及时绑定邮箱和手机立即绑定

toLocaleString 在 5 位数字后重置值

toLocaleString 在 5 位数字后重置值

青春有我 2023-03-24 15:14:04
简介:我正在创建一个包含许多输入的表单,其中一些输入应该只采用整数值。这些输入有类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”的输出是这样的:4454504,5004 // if adding a fifth character, this.value resets to the first character entered事实证明,这比我预期的要困难。有没有更简单的方法来完成这个?
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

发生这种情况是因为您正在解析本地化数字4,500并且,不受支持,因此parseFloat丢弃不受支持的字符 ( the, ) 之后的所有内容。


没有内置方法来解析本地化数字。


对于您使用的这种特定本地化,您可以这样做 parseFloat(this.value.replace(/,/g,''));并且可以解决该问题。


function addComma(x) {

  return x.toLocaleString('en');

}


// add function to int inputs

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

  let val = parseFloat(this.value.replace(/,/g, ''));

  this.value = addComma(val);

  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以获得更强大的方法


查看完整回答
反对 回复 2023-03-24
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信