0

私は住宅購入者のための計算機を作っています。ユーザーがフィールドに数値を入力するたびに、最終的な購入価格が更新されます。合計購入価格の6倍の変数を実際に取るフィールドがいくつかあります。その特定のフィールドが入力された後にのみ、6か月の計算が表示されるようにしたいと思います。

現在、tは機能しますが、正しい金額を計算しません。ただし、タブでテキストフィールドに戻り、テキストを出力すると、電卓は正しく機能します。最終購入価格は毎回正しく計算されます。

http://coyle.webedgemedia.com/Admin/BidSheet/47

http://jsfiddle.net/webedge/7fyV5/(CSSは正しく実行されていませんが、何が起こっているのかを理解することができます)

DOMがタブアウトしたときに値がわからないことと関係があると確信していますが、.on()関数がそれを解決するのに役立つと思いました。どんな助けでも大歓迎です。

$('.currency').on("blur", function () {

    var purchasePrice = 0;
    var futureSalesPrice = $('#txtFutureSales').length > 0 ? $('#txtFutureSales').val().replace("$", "").replace(",", "") : 0;
    var purchaseLoan = $('#txtPurchaseLoan').length > 0 ? $('#txtPurchaseLoan').val().replace("$", "").replace(",", "") : 0;
    var remodeling = $('#txtRemodeling').length > 0 ? $('#txtRemodeling').val().replace("$", "").replace(",", "") : 0;
    var utilities = $('#txtUtilities').length > 0 ? $('#txtUtilities').val().replace("$", "").replace(",", "") : 0;
    var HOADues = $('#txtHOADues').length > 0 ? $('#txtHOADues').val().replace("$", "").replace(",", "") : 0;
    var Insurance = $('#txtInsurance').length > 0 ? $('#txtInsurance').val().replace("$", "").replace(",", "") : 0;
    var Taxes = $('#txtTaxes').length > 0 ? $('#txtTaxes').val().replace("$", "").replace(",", "") : 0;
    var LoanInterestCarry = ('#txtLoanInterestCarry').length > 0 ? $('#txtLoanInterestCarry').val().replace("$", "").replace(",", "") : 0;
    var Inspection = $('#txtInspection').length > 0 ? $('#txtInspection').val().replace("$", "").replace(",", "") : 0;
    var SaleTitle = $('#txtSaleTitle').length > 0 ? $('#txtSaleTitle').val().replace("$", "").replace(",", "") : 0;
    var RealEstateSales = $('#txtRealEstateSales').length > 0 ? $('#txtRealEstateSales').val().replace("$", "").replace(",", "") : 0;
    var ProjectedProfit = $('#txtProjectedProfit').length > 0 ? $('#txtProjectedProfit').val().replace("$", "").replace(",", "") : 0;

    utilities = utilities * 6;
    HOADues = HOADues * 6;
    Insurance = Insurance * 6;
    Taxes = Taxes * 6;
    LoanInterestCarry = LoanInterestCarry * 6;

    $('.currency').formatCurrency();

    purchasePrice = futureSalesPrice - purchaseLoan - remodeling - Insurance - utilities - HOADues - Taxes - LoanInterestCarry - Inspection - SaleTitle - RealEstateSales - ProjectedProfit;

    $('#txtUtilities').on("blur", function () {
        $('.utilitiesMonthly').text(utilities).formatCurrency();
    });

    $('#txtHOADues').on("blur", function () {
        $('.hoaMonthly').text(HOADues).formatCurrency();
    });

    $('#txtInsurance').on("blur", function () {
        $('.insuranceMonthly').text(Insurance).formatCurrency();
    });

    $('#txtTaxes').on("blur", function () {
        $('.taxesMonthly').text(Taxes).formatCurrency();
    });

    $('#txtLoanInterestCarry').on("blur", function () {
        $('.loanInterestCarry').text(LoanInterestCarry).formatCurrency();
    });

    $('.price').text(purchasePrice).formatCurrency();

});
4

1 に答える 1

0

.on()関数からコードを取り出し、.keyup()で更新することにしました。

$('#txtFutureSales').on("keyup", function () {
        $('#txtRealEstateSales').val(($(this).val().replace("$", "").replace(",", "")) * .06).formatCurrency();
    });

$(this)変数がスコープ外だったので、入力された値を取得するのと同じくらい簡単に使用できました。

それを行うためのより速い方法があるかもしれませんが、それは機能します。私はまだどんな提案もします。

于 2012-09-05T19:10:12.693 に答える