输入价格格式化javascript,哪里错了

时间:2013-03-22 08:32:08

标签: javascript jquery regex

在你说它的副本之前,我不是在问如何实际格式化价格。但是问我在哪里做错了,或者我应该怎样做才能按照我想要的方式来实现它。

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

喜欢价格1

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

  1. 格式搞砸了后6位
  2. 按回键(删除号码)时价格仅在6位数后重新格式化
  3. 代码

    $(".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 />
    

1 个答案:

答案 0 :(得分:0)

price.replace(",","")仅替换逗号的第一个实例,而不是所有实例。替换为

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

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

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