青春有我
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以獲得更強大的方法
添加回答
舉報
0/150
提交
取消