javascript语法错误(限制2位小数)

时间:2015-12-14 14:45:03

标签: javascript jquery

我这样做了:

document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2)

我试图将值限制为两位小数。

但是.toFixed(2)我的脚本不起作用,我做错了什么?

完整代码:

<script>

  var jq111 = jQuery.noConflict();

   jq111(function(){

   jq111('#_regular_price').on('input', function(){

   document.getElementsByName("duel-cost")[0].value = document.getElementsByName("_regular_price")[0].value.replace(",", ".");

   if(jq111("#prized").val().length > 1) {
    var discount = document.getElementsByName("discount")[0].value;
    var cost = document.getElementsByName("duel-cost")[0].value;
     document.getElementsByName("_sale_price")[0].value = cost - (cost * (discount / 100));
    }
  })
});

<script>

 function updateInput(){

  document.getElementsByName("duel-cost")[0].value = document.getElementsByName("_regular_price")[0].value.replace(",", ".");

   var discount = document.getElementsByName("discount")[0].value;

   var cost = document.getElementsByName("duel-cost")[0].value;

   document.getElementsByName("price")[0].value = cost - (cost * (discount / 100));

   document.getElementsByName("_sale_price")[0].value = document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2);

}

</script>

新:

 var element = document.getElementsByName("price")[0];

 element.value = parseFloat(element.value.replace(/\./g, '').replace(',', '.')).toFixed(2).replace('.', ',');

 document.getElementsByName("_sale_price")[0].value = element;

1 个答案:

答案 0 :(得分:2)

字符串没有toFixed方法;数字呢。输入的value是一个字符串,这是您在调用replace时所依赖的字符。

如果value包含JavaScript规则的有效数字,您可以这样做:

var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value).toFixed(2);

我不知道你要对replace做什么,所以我把它留了出来。你的完整代码更有意义。在原文中,您使用.替换,。但是您的完整代码会将,替换为.,这是有道理的,所以:

var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value.replace(',', '.')).toFixed(2).replace('.', ',');

请注意我如何将,放回去。

您可能也希望将.用作千位分隔符。正确地做这件事有点复杂,但我们可以删除它们:

var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value.replace(/\./g, '').replace(',', '.')).toFixed(2).replace('.', ',');