Saya harus memperbaiki kalkulator hipotek ini, tetapi saya benar-benar tidak mengerti mengapa perhitungannya tidak berfungsi. Saya butuh bantuan untuk menyelesaikan ini. Atau setidaknya seseorang untuk membuat saya mengerti apa yang salah dengan fungsi ini. (Kalkulator memiliki input untuk gabungan pendapatan tahunan Pemohon dan input lain untuk Deposit. Kalkulator harus menunjukkan hasil untuk Nilai properti maksimum dan Perkiraan biaya bulanan).

function PMT (rate_per_period, number_of_payments, present_value, future_value, type ) {
        var q = Math.pow(1 + rate_per_period, number_of_payments);
        return (rate_per_period * (future_value + (q * present_value))) / ((-1 + q) * (1 + rate_per_period * (type)));
}

jQuery(document).ready(function ($) {

        $(".input").keyup(function () {
            var annualIncomeInput = 0;
            var depositInput = 0;
            var annualIncome = 0;
            var deposit = 0;
            var mortgage = 0;
            var propertyValue = 0;
            var monthlyPayments = 0;
            annualIncomeInput = $('#annualIncome').val();
            depositInput = $('#deposit').val();
            annualIncome = parseFloat(annualIncomeInput.replace(/,/g, ''));
            deposit = parseFloat(depositInput.replace(/,/g, ''));
            if (annualIncomeInput && depositInput) {
                if ((deposit / 0.1 - deposit) >= (annualIncome * 4.5)) {
                    mortgage = annualIncome * 4.5;
                    propertyValue = mortgage + deposit;
                } else {
                    propertyValue = deposit / 0.1;
                    mortgage = propertyValue - deposit;
                }
                monthlyPayments = PMT(0.0307/12, 30*12, mortgage, 0, 0).toFixed(2);
            }
            
            propertyValue = parseFloat(propertyValue).toLocaleString();
            monthlyPayments = parseFloat(monthlyPayments).toLocaleString();
            $('#totalHowMuchCanIBorrow').text('£' + propertyValue);
            $('#estimatedCosts').text('£' + monthlyPayments);
            
        })
    })

Jika Anda membutuhkan lebih banyak detail, beri tahu saya! Terima kasih!

0
Elisabeta Aionese 27 November 2021, 11:48
Apa yang dilakukannya sekarang tidak seperti yang Anda harapkan? Akan sangat membantu jika Anda mengganti angka ajaib dengan konstanta bernama untuk menjelaskan angka-angka itu. Apa 4.5, atau 0.0307?
 – 
Tom W
27 November 2021, 11:53
W Saya pikir itu hanya beberapa aturan angka praktis untuk menghitungnya. Tetapi juga tidak mendapatkan apa yang seharusnya salah. Dapat menambahkan contoh seperti apa hasilnya atau mencoba menulis formular apa yang seharusnya dan kami dapat membantu Anda menemukan kesalahan dalam implementasi
 – 
Mucksh
27 November 2021, 12:11
Tapi apakah itu tidak berhasil sama sekali atau hanya tidak tepat bukan hasil yang tepat?
 – 
Mucksh
27 November 2021, 12:21
@TomW, PMT = Fungsi PMT dikategorikan di bawah fungsi Excel keuangan. Fungsi ini membantu menghitung total pembayaran (pokok dan bunga) yang diperlukan untuk melunasi pinjaman atau investasi dengan tingkat bunga tetap selama periode waktu tertentu. 0,0307/12 = tarif. Saya temukan di internet ( PMT(rate, nper, pv, [fv], [type]) ). 4,5 berarti - 4,5 kali gaji mereka.
 – 
Elisabeta Aionese
27 November 2021, 12:21
1
Dalam kode Jquery adalah setelah HTML. Saya akan membuat beberapa perubahan dan kembali dengan jawaban saya. Terima kasih!
 – 
Elisabeta Aionese
27 November 2021, 12:35

1 menjawab

Jawaban Terbaik

Ini berfungsi mungkin Anda menemukan kesalahan dengan membandingkannya dengan milik Anda :) tidak mengubah apa pun, hanya menambahkan html yang pas ke dalamnya

function PMT(rate_per_period, number_of_payments, present_value, future_value, type) {
  var q = Math.pow(1 + rate_per_period, number_of_payments);
  return (rate_per_period * (future_value + (q * present_value))) / ((-1 + q) * (1 + rate_per_period * (type)));
}

jQuery(document).ready(function($) {
  //not sure how your html looks but maybe here you want $("input") and not $(".input") that selects all elements with the css class input that's maybe missing in the html
  $(".input").keyup(function() {
    var annualIncomeInput = 0;
    var depositInput = 0;
    var annualIncome = 0;
    var deposit = 0;
    var mortgage = 0;
    var propertyValue = 0;
    var monthlyPayments = 0;
    annualIncomeInput = $('#annualIncome').val();
    depositInput = $('#deposit').val();
    annualIncome = parseFloat(annualIncomeInput.replace(/,/g, ''));
    deposit = parseFloat(depositInput.replace(/,/g, ''));
    if (annualIncomeInput && depositInput) {
      if ((deposit / 0.1 - deposit) >= (annualIncome * 4.5)) {
        mortgage = annualIncome * 4.5;
        propertyValue = mortgage + deposit;
      } else {
        propertyValue = deposit / 0.1;
        mortgage = propertyValue - deposit;
      }
      monthlyPayments = PMT(0.0307 / 12, 30 * 12, mortgage, 0, 0).toFixed(2);
    }

    propertyValue = parseFloat(propertyValue).toLocaleString();
    monthlyPayments = parseFloat(monthlyPayments).toLocaleString();
    $('#totalHowMuchCanIBorrow').text('£' + propertyValue);
    $('#estimatedCosts').text('£' + monthlyPayments);

  })
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input class="input" id='annualIncome' type="number">
<input class="input" id='deposit' type="number">
<div id="totalHowMuchCanIBorrow"></div>
<div id="estimatedCosts"></div>
0
Gerard 27 November 2021, 13:33
1
Kamu berharga! Anda menyelamatkan hari saya! Kelas input adalah salah satu masalah. Masalah lain - di mana kode jquery diinisialisasi dalam HTML. Terima kasih!
 – 
Elisabeta Aionese
27 November 2021, 13:24