0

在你说它的重复之前,我不是在问如何实际格式化价格。但是问我哪里做错了,或者我应该怎么做才能以我想要的方式实现它。

我做了价格格式化(实际上是从某处复制代码) http://jsfiddle.net/qwY24/

喜欢价格 1

但现在我想在输入字段本身(价格 2)中格式化价格,它可以正常工作到 6 位,但之后它就搞砸了。它有两个问题

  1. 6位后格式混乱
  2. 当按返回键(删除号码)时,价格仅在 6 位数后不会重新格式化

代码

$(".price1").on("keyup",function(){
   var price = $(this).val();
   $(".formatted1").text(price.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
});

$(".price2").on("keyup",function(){
   var price = $(this).val();
   price = price.replace(",","");
   $(".price2").val(price.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
   $(".formatted2").text(price.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
});
<label>Price 1</label>
<input type="text" class="price1" /><br />
<label><b>Price 1 Formatted:</b></label>
<span class="formatted1"></span><br /><br /><br />

<label>Price 2</label>
<input type="text" class="price2" /><br />
<label><b>Price 2 Formatted</b></label>
<span class="formatted2" ></span><br /><br /><br />
4

1 回答 1

0

price.replace(",","")仅替换逗号的第一个实例,而不是全部替换。将其替换为

price = price.replace(/,/g,"");

(另外,.toString()下一行的部分是不必要的,因为变量已经是一个字符串。)

演示:http: //jsfiddle.net/qwY24/3/

于 2013-03-22T09:08:36.650 回答