javascript语法错误(限制为2位小数)
我做了这个:javascript语法错误(限制为2位小数),javascript,jquery,Javascript,Jquery,我做了这个: document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2) 我想把一个值限制在小数点后两位 但是使用.toFixed(2)我的脚本无法工作,我做错了什么 完整代码: <script> var jq111 = jQuery.noConflict(); jq111(function(){ jq111('#_regular_price').on('input', f
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));
}
})
});
字符串没有固定的
toFixed
方法;数字确实如此。输入的值
是一个字符串,在对其调用replace
时依赖该字符串
如果value
包含JavaScript规则规定的有效数字,则可以执行以下操作:
var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value).toFixed(2);
我不知道你想用替换做什么,所以我忽略了这一点。您的完整代码更有意义。在原始版本中,您将
替换为,
。但是您的完整代码将,
替换为,
,这很有意义,因此:
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('.', ',');
如果你详细阐述一下“打破我的剧本”,那会有帮助的。你已经给出了有效的语法,所以还有其他事情要做。现在我粘贴了我的完整代码。我可能会在我的帖子上添加一个名为“new”的新版本。输入说:[object HTMLInputElement]@eugeniosgala:那么您在某处缺少了.value
。编辑:是的,在最后。记住,element
是元素,element.value
是它的value
属性。
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('.', ',');