我这样做了:
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;
答案 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('.', ',');