2017-02-26 82 views
2

我正在尝试使用设置了小数位的数字字段进行计算。使用十进制数字段计算

小数点正确显示时,计算未运行。下面是我的javascript:

function setZeroNumberDecimal(el) { 
    el.value = parseFloat(el.value).toFixed(0); 
}; 
function setThreeNumberDecimal(el) { 
    el.value = parseFloat(el.value).toFixed(3); 
}; 

$(document).ready(function(){ 
$(".calc").keyup(function(){ 
     var areasf = +$(".SF").val(); 
     $("#acre").val(areasf/43560); 
}); 
}); 

和HTML:

<input type="number" onchange="setZeroNumberDecimal(this)" name="grosslandSF" class="calc SF"> 
    <input type="number" onchange="setThreeNumberDecimal(this)" name="grosslandacre" disabled="disabled" id="acre"> 

任何帮助将是巨大的。

+0

看看这[回答](http://stackoverflow.com/a/34057860/4824627)和这[回答](http://stackoverflow.com/a/22654797/4824627)和这[回答]( http://stackoverflow.com/q/19011861/4824627),'step'可能是这里的问题 –

+1

小数不是问题。这是计算。 –

回答

0

您可以使用oninput事件代替内联onchange事件。

当您更改像一个值:

$("#acre").val(areasf/43560) 

这不会fire相应的事件,所以你必须自己做这件事:

$("#acre").val(areasf/43560).trigger('input'); 

的片段:

function setZeroNumberDecimal(el) { 
 
    el.value = parseFloat(el.value).toFixed(0); 
 
}; 
 
function setThreeNumberDecimal(el) { 
 
    el.value = parseFloat(el.value).toFixed(3); 
 
}; 
 

 
$(document).ready(function(){ 
 
    $(".calc").keyup(function(){ 
 
     var areasf = +$(".SF").val(); 
 
     $("#acre").val(areasf/43560).trigger('input'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<form> 
 
    <input type="number" oninput="setZeroNumberDecimal(this)" name="grosslandSF" class="calc SF"> 
 
    <input type="number" oninput="setThreeNumberDecimal(this)" name="grosslandacre" disabled="disabled" id="acre"> 
 
</form>

+0

谢谢,calc正在运行并坚持3位小数。然而,如果你输入43560,结果是1,而它应该是1.000(这是一个土地的东西,亩,即使是一个整数,总是应该导致3位小数) –

+0

@MichaelM事实上,如果你输入43560,结果是1.000。你正在使用哪种浏览器? – gaetanoM

+1

你是对的。我忘了把我的onchange改成oninput。谢谢你,gaetanoM。你救了我一个巨大的头痛! –