2012-09-05 30 views
0

我正在爲購房者構建計算器。每次用戶在現場輸入數字時,最終購買價格都會更新。有幾個領域實際上佔總購買價格的6倍。我希望6個月的計算只在輸入特定字段後才顯示。jquery:試圖獲得文本字段的值.onfocus()

目前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(); 

}); 
+0

你需要發佈你的代碼或更好的,一個jsFiddle。 – j08691

+0

.jsFiddle添加 –

回答

0

我把代碼了。對()函數,決定更新它.keyup()

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

自變量是超出範圍是一樣容易使用$(this)以獲取輸入的值。

可能有更快的方法來做到這一點,但它的工作原理。我仍然會採取任何建議。