2017-02-26 117 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。你救了我一個巨大的頭痛! –