ホームページ用見積もりフォームをJavascriptで自動計算

このQ&Aのポイント
  • 縦に長いページで一番下に計算結果を表示
  • ページをスクロールしても、何時でも計算結果が見られるように、別のウィンドウ(レイヤー)でページ内に表示。
  • 3桁区切りのJavascriptを外部参照している同一のページに記入した方が良いか、別参照の方が良いかも教えていただければ幸いです。
回答を見る
  • ベストアンサー

Javascript 計算後の3桁区切り

ホームページ用見積もりフォームをJavascriptで自動計算 縦に長いページで一番下に計算結果を表示 ページをスクロールしても、何時でも計算結果が見られるように、別のウィンドウ(レイヤー)でページ内に表示。 以上までは出来ました。 最後に計算結果を3桁区切りで表示させたいのですが、上手く出来ません。 お知恵をお貸しくださいませ。 Javascriptは外部参照しております。 3桁区切りのJavascriptを外部参照している同一のページに記入した方が良いか、別参照の方が良いかも教えていただければ幸いです。 以下がJavascriptのコードになります。 function keisan(){ // 設定開始 var tax = 5; // 消費税率 // 商品1 var price1 = document.form1.goods1.options[document.form1.goods1.selectedIndex].value; // 商品2 var price2 = document.form1.goods2.options[document.form1.goods2.selectedIndex].value; // 商品3 var price3 = document.form1.goods3.options[document.form1.goods3.selectedIndex].value; // 合計を計算 var total1 = parseInt(price1) + parseInt(price2) + parseInt(price3) ; // 設定終了 document.form1.field_total1.value = total1; // 合計を表示 var tax2 = Math.round((total1 * tax) / 100); document.form1.field_tax.value = tax2; // 消費税を表示 document.form1.field_total2.value = total1 + tax2; // 税込合計を表示 //右の窓に表示する金額 document.getElementById("display_account_amount").innerHTML = total1; document.getElementById("display_account_tax").innerHTML = tax2; document.getElementById("display_account_all").innerHTML = total1 + tax2; }

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

値を3桁区切りに整形する関数を用意します function editNumberSeparated(num) { var t, s = num.toString(); do { t = s; s = t.replace(/^([\+\-]?\d+)(\d\d\d)/,"$1,$2") } while (t != s); return s; } 値を画面表示させる処理に、上記関数をかませます 要素.value = total1; → 要素.value = editNumberSeparated(total1); 要素.innerHTML = total1 + tax2; → 要素.innerHTML = editNumberSeparated(total1 + tax2); スクリプトが全て外部参照されているならば、上記関数もそこに混ぜ込むのが適当かと思います。

fudoh-k
質問者

お礼

Ogre7077様。 素早いご返事をありがとうございます。 早速入力しました。 予想以上です!! しっかりと作動いたしました~~ ありがとうございます。 助かりました~~O(≧▽≦)O 本当にありがとうございます。

関連するQ&A

  • Javascript 足し算

    ホームページ用見積もりフォーム 商品の値段を合計する。 一個ずつ足しての計算で処理してるのですが、商品がかなりの数になりそうです。 エクセルのSUMのように商品1から商品1000までを計算する関数を教えていただきたいと思っています。 JavaScriptは外部参照しています。 以下がJavaScriptのコードになります。 function keisan(){ // 設定開始 var tax = 5; // 消費税率 // 商品1 var price1 = document.form1.goods1.options[document.form1.goods1.selectedIndex].value; // 商品2 var price2 = document.form1.goods2.options[document.form1.goods2.selectedIndex].value; // 商品3 var price3 = document.form1.goods3.options[document.form1.goods3.selectedIndex].value; // 合計を計算 var total1 = parseInt(price1) + parseInt(price2) + parseInt(price3); // 設定終了 document.form1.field_total1.value = editNumberSeparated(total1); // 合計を表示 var tax2 = Math.round((total1 * tax) / 100); document.form1.field_tax.value = editNumberSeparated(tax2); // 消費税を表示 document.form1.field_total2.value = editNumberSeparated(total1 + tax2); // 税込合計を表示

  • JavaSの追加計算

    function keisan(){ // 設定開始 var price1 = document.form1.kazu.value; // 合計を計算 if (price1 < 10000) { var total = parseInt(price1)*44/10000; } else { var total = parseInt(price1)*45/10000; } else if // 設定終了 document.form1.field_total.value = total; // 合計を表示 } // --> </SCRIPT> 上記に追加で*22/10000の計算を入れたいのですがどうしたらいいのですようか? 初心者なので申し訳ございませんがご教授お願い致します。

  • 計算結果を変数に代入

    とあるサービスの料金計算フォームを制作しています。 特定の場合のみ料金が割引されるので、if構文で条件分岐してみたところ、 計算結果(小計)にはうまく反映されるのですが、いくつかの小計を合計すると、 if構文で分岐する前の(つまり割り引き前の)値段で計算されてしまいます。 // 小計1 var total_01 = document.form_test.price_01.options [document.form_test.price_01.selectedIndex].value * document.form_test.goods_01.options [document.form_test.goods_01.selectedIndex].value + document.form_test.price_02.options [document.form_test.price_02.selectedIndex].value * document.form_test.goods_02.options [document.form_test.goods_02.selectedIndex].value ; // 小計1 document.form_test.F-total_01.value = total_01; // 小計1を表示 if (document.form_test.price_01.options [document.form_test.price_01.selectedIndex].value != 0 && document.form_test.price_02.options [document.form_test.price_02.selectedIndex].value != 0) {document.form_test.F-total_01.value = total_01 - 500;} // 両方で-500 if (total_01 <= 0) {document.form_test.F-total_01.value = 0;} // 合計 var total_all = total_01 + total_02 + total_034; // 合計 document.form_test.F-total_all.value = total_all; // 合計を表示 小計を表示する <INPUT TYPE="text" NAME="F-total_01" VALUE="0"> に出てきた値を、そのまま次の計算に代入できれば 解決するのではないかと思うのですが、行き詰ってしまいました。 どうかアドバイスをよろしくお願いいたします。

  • メールフォーム内の自動計算 valueの値を2つの目的で使いたい

    以下の様な形で、自動計算フォームを作っています。 金額は「value=" "」から計算されているのですが、この部分は同時に使おうと思っているメール送信の商品名の部分にあたります。 このまま送信してしまうと、商品名が数字だけになってしまうのですが、何かよい方法をご存知でしょうか・・・。 メール送信のプログラムは私の方では変えられないので、出来れば以下の自動計算フォームを変える事で解決できたらと思っています。 javascriptは専門ではないのですが、こつこつ勉強中です。よろしくお願いいたします。 -------------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Untitled Document</title> <script type="text/javascript"> <!-- function cal(){ var price1 = document.mail_form.goods1.options[document.mail_form.goods1.selectedIndex].value; var price2 = document.mail_form.goods2.options[document.mail_form.goods2.selectedIndex].value; var total = parseInt(price1) + parseInt(price2); document.mail_form.field_total.value = total; // 合計 } // --> </script> </head> <body> <form name="mail_form"> <p id="mail-form-box1"> ●商品1<br /> <select name="goods1" onChange="cal()"> <option value="100">バッグA 100円</option> <option value="200">バッグB 200円</option> <option value="300">バッグC 300円</option> </select> </p> <p id="mail-form-box2"> ●商品2<br /> <select name="goods2" onChange="cal()"> <option value="100">靴A 100円</option> <option value="200">靴A 200円</option> <option value="300">靴A 300円</option> </select> </p> 合計: $<input type="text" name="field_total" value="0"><BR> </form> </body> </html> --------------------------------------------------------

  • リストから計算するJavaScript

    質問させて下さい。料金を計算するスクリプトを組みたいのですが 良くある単価×個数という形ではなく、リストAAAの中のaaaは500円、 bbbは5000円、リストBBBの中のcccは10000円、dddは15000円といった感じで 各リストの合計と総合計が出る形にしたいのです。 function totalPrice(){ var numCode01 = document.inputForm.code01.selectedIndex; var priceCode01 = 1 * numCode01; document.inputForm.code01_price.value = priceCode01; var numCode02 = document.inputForm.code02.selectedIndex; var priceCode02 = 1 * numCode02; document.inputForm.code02_price.value = priceCode02; var numCode03 = document.inputForm.code03.selectedIndex; var priceCode03 = 1 * numCode03; document.inputForm.code03_price.value = priceCode03; var total = priceCode01 + priceCode02 + priceCode03; document.inputForm.total_price.value = total; } と組んで <select name="code01" onChange="totalPrice();"> <option value="500">aaa</option> <option value="5000">bbb</option> </select> としてみたのですが、うまくいきません。基本的な知識が無いまま組んでしまったので どこが悪いのかも分かりません。どうかご助言お願いします。

  • 自動計算をIEとFireFoxで動かすには?

    いつもお世話になっています。 フォームに入力した値を10で割った数を答えを自動で計算して、別フォームに出力する部分で、FireFoxでは自動計算されるのですがIEでは計算が行われませんでしたx_x; 【ソース】******************************* <script type="text/javascript"> <!-- function keisan(){ // 設定開始 // 商品1 var price1 = document.form1.goods1.value / 10; // 単価を設定 document.form1.field1.value = price1; // 小計を表示 // 合計を計算 var total = price1; // 設定終了 document.form1.field_total.value = total; // 合計を表示 } *********************************** 解決方法をご教授頂けたら幸いです。 何卒よろしくお願い致します。

  • IEで動作確認もFirefoxで動作しない

    皆さんお世話になってます。Javascript精通していません。 どうぞご指導ください。 ソースは下記になります。Firefox3.0で確認すると何も表示されません。IEだとうまく表示されました。原因を教えていただけますでしょうか? HTML <img src="./images/btn_estimate.gif" onclick="recalculate();"/> [合計]<label id="price"><?= $price ?></label> JavaScript function recalculate() { var total = 0; document.getElementById("price").innerText = ""; if (document.form.design.checked == true) { total = total + 10000; } total = total + document.form.pages.value * 5000; if (document.form.form_func.checked == true) { total = total + 3000; } document.getElementById("price").innerText = total; }

  • 金額表示で3桁ごとにカンマを付ける方法

    こんにちは。 JavaScriptで金額を表示する際にカンマ(,)を付けたいのですがうまくできません。 「値段は10,800円(税込)です。」と表示させたいのです。 toLocaleString関数を使用すればいいらしいですが、どのように記述すればいいのかわかりませんでした。 ご教示頂けませんか。 宜しくお願い致します。 <section> <p id="output"></p> </section> <script> var total = function(price) { var tax = 0.08; return price + price * tax; } document.getElementById('output').textContent = '値段は' + total(10000) + '円(税込)です。'; </script>

  • ジャバスクリプトで自動計算表を作ったのですが、IEでは動くのですが、フ

    ジャバスクリプトで自動計算表を作ったのですが、IEでは動くのですが、ファイヤーフォックスでは動きません。どこに不具合があるのでしょうか? 問題のフォームはこちらです http://tatamitai.com/form1-11.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>メールフォーム</TITLE> <META http-equiv="Content-Style-Type" content="text/css"> <META name="description" content="メールフォーム"> <META name="keywords" content="メルマガ,ホームページ,サイト制作"> <script type="text/javascript"> <!-- function keisan(){ // 設定開始 // 商品1 var price1a = 3680; var price1b = document.form1.格安コース:数.selectedIndex * 1; // 単価を設定 var price1c = document.form1.格安コース:工期等課金.value * 1; // 単価を設定 var price1d = document.form1.格安コース:柄.value * 1; // 単価を設定 var price1e = document.form1.格安コース:シート.value * 1; // 単価を設定 var price1f = document.form1.格安コース:乾燥.value * 1; // 単価を設定 var total1 = document.form1.格安コースの小計.value = (price1a + price1c + price1d + price1e + price1f) * price1b; // 小計を表示 // 商品2 var price2a = 4900; var price2b = document.form1.標準コースA:数.selectedIndex * 1; // 単価を設定 var price2c = document.form1.標準コースA:工期等課金.value * 1; // 単価を設定 var price2d = document.form1.標準コースA:柄.value * 1; // 単価を設定 var price2e = document.form1.標準コースA:シート.value * 1; // 単価を設定 var price2f = document.form1.標準コースA:乾燥.value * 1; // 単価を設定 var total2 = document.form1.標準コースAの小計.value = (price2a + price2c + price2d + price2e + price2f) * price2b; // 小計を表示 // 合計を計算 var total = total1 + total2; // 設定終了 document.form1.合計.value = total; // 合計を表示 } // --> </script> <STYLE type=text/css> <!-- A:link { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:visited { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:active { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:hover { FONT-SIZE: 10pt

  • ループ、プログラムなのに!?

     以下のプログラムは、ただの乗算と、その合計を計算するだけなのに、なんでfor (var i = 1; i < 4; i++) {  のループ、プログラムなのですか?  もし同じ計算結果のダイアログBOXで、Javaの範疇で組むのであれば、他にどんなプログラムがあるのですか?  よろしくお願いします。 <HTML> <HEAD> <TITLE>ループ</TITLE> <script tytpe="text/javascript"> <!-- function calc(){ var alltotal = 0; for (var i = 1; i < 4; i++) { var price = document.getElementById("price" + i).innerHTML; var num = document.getElementById("num" + i).value; var total = price * num; document.getElementById("total" + i).innerHTML = total; alltotal += total; } document.getElementById("alltotal").innerHTML = alltotal; } </script> </HEAD> <body> <p><span id="price1">100</span><input id="num1" value="0" /><span id="total1">1の合計</span></p> <p><span id="price2">200</span><input id="num2" value="0" /><span id="total2">2の合計</span></p> <p><span id="price3">300</span><input id="num3" value="0" /><span id="total3">3の合計</span></p> <div id="alltotal">合計</div> <button onclick="calc()">計算</button> </body> </HTML>

専門家に質問してみよう