// ===================================== // 数値にカンマを付与 // ===================================== function addFigure(str) { var num = String(str).replace(/,/g, ""); while (num !== (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2"))); return num; } // ===================================== // 価格単位「万円」の重複防止 // (既存共通JS対策) // ===================================== function normalizePriceUnit(e) { var units = e.find('.price_unit'); if (units.length > 1) { units.slice(1).remove(); // 2つ目以降を削除 } } // ===================================== // ローン計算 // ===================================== function loanSim(e) { if (!e || !e.length) return; // 「万円」重複を強制的に整理 normalizePriceUnit(e); // 物件価格(万円)取得 var p = e.text().replace(/[^0-9]/g, ''); if (!p) return; var price = Number(p); // 万円 var propertyPrice = price * 10000; // 円 var wrap = e.parents(".template_detail"); if (!wrap.length) return; // 入力値取得 var kinri = Number(wrap.find('input[name="kinri"]').val()); var bonus = Number(wrap.find('input[name="bonus"]').val()) || 0; var atama = Number(wrap.find('input[name="atama"]').val()) || 0; var hensai = Number(wrap.find('input[name="hensai"]').val()); if (!kinri || !hensai) return; // ローン計算 var sum = Math.floor(propertyPrice / 10000) * 10000; var atamakin = Math.floor((atama * 10000) / 10000) * 10000; var rate = kinri / 100; var nper = hensai * 12; var deno = Math.pow(1 + rate / 12, nper); var nume = (sum - atamakin) * deno; var pmt = nume / (1 - deno) * (rate / 12); var nenso = (-1) * pmt * 12; var price_monthly = Math.round( (nenso - (bonus * 10000) * 2) / 12 ); // 表示(DOM破壊なし) wrap.find("#price_monthly").text(addFigure(price_monthly) + "円"); } // ===================================== // jQuery待機 → 初期化 // (jQuery多重・Prototype混在対策) // ===================================== (function waitForJquery() { if (typeof jQuery === "undefined") { setTimeout(waitForJquery, 50); return; } jQuery(function ($) { // 初期表示時に計算 $("#price_sim").each(function () { loanSim($(this)); }); // 再計算ボタン $(".research_btn") .off("click.loan") .on("click.loan", function () { var e = $(this) .parents(".template_detail") .find("#price_sim"); loanSim(e); }); }); })();