
【JavaScript】プルダウンで数字を選択後、即時計算したいですが
方法がわかりません。
http://bunjin.com/java/calc.html
以上のサンプルページでは、チェックボックスを押した直後、
下部のテキストボックスに金額が表示されるように設定されていますが、
チェックボックスの横などにプルダウンで数字を表示させて、
その数字の積を合計金額に表示させたいのです。
例)
「ラーメン(500円)」のチェックボックスにチェック(合計金額には「500 円」と表示)
↓
その「ラーメン(500円)」の横にプルダウンボックスを選択(値は1,2,3,・・・)
↓
選択した値により、合計金額を変化させたい(プルダウンで1を選べば500円、2を選べば1000円、・・・)
どうかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
最終的にどのような構造になるのか不明なので、よくわかりませんが…
ご参考まで。
(マークアップがリストがよいのか表がよいのかわかりませんが、とりあえずリストで…)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
form#form1 ul { list-style-type:none; margin:0; padding:0; }
form#form1 span { display:inline-block; width:10em; }
form#form1 select { width:4em; }
form#form1 div { margin-top:0.8em; }
form#form1 div input { width:6em; }
</style>
<script type="text/javascript">
<!--
function calc(e) {
var i = 0, total = 0, str, elm = e.form.elements;
while (e = elm[i++]) {
if (e.nodeName == "SELECT" && e.value != "0") {
str = e.previousSibling;
while (str && str.nodeName != "SPAN") str = str.previousSibling;
str = str?str.firstChild.nodeValue:"no";
str = Number(str.replace(/^.+[((]([0-9]+)円[))]$/,"$1"));
if (!isNaN(str)) total += +str * e.value;
}
}
elm["goukei"].value = total == 0?"":total;;
}
//-->
</script>
</head>
<body>
<form id="form1">
<ul>
<li><span>ラーメン(500円)</span>
<select name="s1" onchange="calc(this)">
<option value="0" selected>--
<option value="1">1
<option value="2">2
<option value="3">3
</select>
</li>
<li><span>チャーハン(600円)</span>
<select name="s2" onchange="calc(this)">
<option value="0" selected>--
<option value="1">1
<option value="2">2
<option value="3">3
</select>
</li>
<li><span>酢豚(700円)</span>
<select name="s3" onchange="calc(this)">
<option value="0" selected>--
<option value="1">1
<option value="2">2
<option value="3">3
</select>
</li>
</ul>
<div><span>合計金額:</span>
<input type="text" name="goukei" readonly value="">円
</div>
</form>
</body>
</html>
ありがとうございます。
思い通りの結果が出力されました。
かなり悩んでいたのですが、これならどうにか自分の満足できる成果物が出来そうです。
本当にありがとうございました。
また質問するかもしれませんが、そのときはまたよろしくお願いします。
No.1
- 回答日時:
考え方は参考サイトの方法のままでいけます。
ただし、プルダウンの場合はonclickではなくonchangeでイベントを取得するようにしておけば、値が変わったときのイベントを取得できます。
あとは、足し算に掛け算が加わるだけです。
でも数量をセレクトで入力させるのなら、チェックボックスが不要だと思うけど。(入力が2度手間では?)
セレクトボックスの初期値を0(または「---」など)にしておいて、個数が入力されたら計算するようにすれば?
この回答への補足
早速のご返答ありがとうございます。
一応チェックボックスは確かに不要なので削除しますが、
チェックボックス自体に
<input type="checkbox" value="500" onclick="calc_total()">
と、valueに"500"と付けられているため、
このチェックボックスを外してしまうとうまく作動が出来ないような気がしてならないんです。
もし、「ラーメン(500円)」と表示されている文章自体にnameやvalueを付属させることが出来れば問題は無いのですが、そのような方法もあるかどうか・・・。
もしよければそれも教えていただけないでしょうか。
質問ばかりで申し訳ないですが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input>の選択肢をプルダウンメ...
-
プルダウンからの背景色変更
-
<select> をmultiple にしてい...
-
jquery-コンボボックス-選択状態
-
C言語クイックソートの比較総回...
-
特定<table>内の<td>の色を変える
-
iframe内のformをサブミットす...
-
フォームで入力した値を別のフ...
-
子から親へチェックボックスの...
-
動的にTabindexの値を変えたい!
-
confirmのOK・キャンセルを押し...
-
ラジオボタンは0からと1からの...
-
フォームのname値を配列にしてJ...
-
selectboxのoptionタグのvalue...
-
画面表示とともにtableの指定の...
-
テーブルの項目の値取得
-
JQuery selectが反映されない
-
jquery での <select multiple=...
-
JavaScriptから自ページリンク...
-
VB.NET DateTimeの型について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでoptionタグを削除...
-
<input>の選択肢をプルダウンメ...
-
プルダウン選択を変更すると、...
-
selectを変更不可にしたい
-
javascriptでセレクトボックス...
-
スマホのフォームでのselect複...
-
プルダウンメニューの件でお願...
-
【JS】selectでchangeした時の...
-
Selectボックスの一覧表示方法
-
AxWebBrowserで開いたWebページ...
-
selectを使った計算
-
selectボックスで選択数を制限...
-
プルダウンメニューのvalue値を...
-
セレクトボックスで選択した内...
-
セレクトメニューの値の取得
-
ラジオボタンとプルダウンを連...
-
プルダウンの選択内容を次のペ...
-
C#(csファイル)とjavascriptと...
-
複数のプルダウンを1つにまとめ...
-
同じ名前のセレクトがある場合...
おすすめ情報