简介:我正在创建一个包含许多输入的表单,其中一些输入应该只采用整数值。这些输入有类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以获得更强大的方法
添加回答
举报
0/150
提交
取消