ページ上に次の製品情報があります。 (画像参照)。計算フィールドの逆計算(上書き)Javascript Jquery
フィールドは利益、GPの%(grossprofit)とマークアップ%は最初は空です。しかし、編集ボタンをクリックすると、これらのフィールドは価格、付加価値レート、ケースコスト、単価の値に基づいて(オンザフライで)計算されます。今
Product info image - after clicking edit
1は「価格、ケースのコストやバットレートフィールド」、利益、GPを編集し、マークアップしたときに(すなわち、編集の前に、以前に空のフィールド)に応じて調整。
これは、この機能を実現するために使用されたコードです。
<script>
function calculate()
{
//Fields that are used for calculations (declare variables)
var casecost = parseFloat($('#q_casecost').val());
var casesize = parseFloat($('#q_casesize').val());
var price = parseFloat($('#q_sellprice').val());
var profit = parseFloat($('#q_profit').val());
var unitcost = parseFloat($('#q_unitcost'));
var vatrate = parseFloat($('#vat_guid option:selected').text()); //dropdownlist
var markup = parseFloat($('#q_markup').val());
//Calculations
var unitcost = casecost/casesize; // get unitcost from casecost FIELD and casesize FIELD
var markuprate = ((price - unitcost)/unitcost) * 100;
//var markupvalue = (markuprate/100) * unitcost;
var price = ((markuprate/100) * unitcost) + unitcost;
var profit = (price - unitcost) - ((vatrate/100) * price);
var grossprofit = (profit/price) * 100;
//set results (calculations) to the updating fields
if (isNaN(casecost) || isNaN(casesize) || isNaN(vatrate)) { return; }
$('#q_casecost').val(casecost.toFixed(2));
$('#q_unitcost').val(unitcost.toFixed(2));
$('#q_profit').val(profit.toFixed(2));
$('#q_grossprofit').val(grossprofit.toFixed(2));
$('#q_sellprice').val(price.toFixed(2));
$('#q_markup').val(markuprate.toFixed(2));
}
$(document).ready(function() {
calculate(); // calculate on page load
//calculate every time these following fields change || monitor the fields that affect changes
$('#vat_guid').change(calculate); //dropdownlist value sent to calculate
$('#q_casecost').change(calculate);
$('#q_casesize').change(calculate);
//$('#q_unitcost').change(calculate); //for REVERSE calculation of case cost
$('#q_profit').change(calculate);
$('#q_markup').change(calculate);
$('#q_sellprice').change(calculate);
$(price).val(calculate);
$(unitcost).change(calculate);
$(profit).change(calculate);
$(markuprate).change(calculate);
//$(markupvalue).change(calculate);
});
</script>
今、私が達成しようとしている次のことは、MARK UPフィールドに入力し、利益、GPと価格はそれに応じて調整していすることができることです。たとえば、100%のマークアップを希望する場合に料金を支払うべき料金を確認したい場合は、それに応じて価格フィールドを更新します。
現時点では、[マークアップ]フィールドに値を入力すると、計算された値に戻って価格に反映されません。私はすでにコード内のマークアップ値に基づいて自分の価格の計算をしています
var price = ((markuprate/100) * unitcost) + unitcost;
この機能を使用するには何が欠けていますか?
を追加し、価格れた場所を見ることができますか?現時点では、どのフィールドの変更についても1つの計算しかありません。どのフィールドが変更されたかを検出し、正しい計算を適用する必要があります。 – Danmoreng
現在、価格からマークアップ率を計算しています。次に、ちょうど計算されたマークアップ率から価格を計算します。だから、マークアップ入力を変更しても何もしないのです。どの入力が変更されたかを確認し、マークアップ率で価格または価格でマークアップ率を計算する必要があります。 – Danmoreng
ヒント@Danmorengのおかげで、私はこの $( '#q_markup')の価格計算をラップすることができました。(function calculate(){ }); それが働いた。あなたのタイトルに – LavsTo