現在JavaScriptを使った、HP上での簡単な見積もりページを製作しています。
チェックボックスやラジオボタン、セレクトメニューで選ばれた項目を足して、最終的にテキストボックスに合計金額を出したいと思っています。
内容は全く違いますが、画像のような感じで項目などを作りたいと思っております。
その時に、ラジオボタンでチェックされていないセレクトメニューは選択(計算に反映)されないようにしたいのです。
(「プラスチック丸型編み込み」等が選択されている時は、「蓋付きのボックス」や「蓋付きバスケット」のセレクトメニューは選択されないようにしたいのです。)
自分の作ったものでは、「色を選択」の時点では0に設定してあるのですが、「蓋付きのボックス」のセレクトメニューが他のものを選択していた場合、それが反映されてしまうのです。
計算させるだけならできるのですが、選択されないようにする方法がわからなくて困っております。
拙い文章で申し訳ないのですが、どなたか教えてくださらないでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
どのような文書構成なのかわからないので、勝手な想定かつ少々非効率的ですが、アイデアとして…
(全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
<!--
function linker(evt){
var t = evt.target || evt.srcElement;
if(t.nodeName != "INPUT" || t.type != "radio") return;
var sel, i, s;
sel = t.form.getElementsByTagName("select");
for(i=0; s=sel[i++];)
if(/(^| )linkage( |$)/.test(s.className)){
t = s.previousSibling;
while(t && (t.nodeName != "INPUT" || t.type != "radio")) t = t.previousSibling;
if(t) s.disabled = !t.checked;
}
}
//-->
</script>
</head>
<body>
<form action="#" onclick="linker(event)">
<fieldset>
<legend>ボックスの蓋</legend>
<input type="radio" name="cover" value="covered">蓋あり
<select class="linkage" name="color_of_cover" disabled>
<option value="1000">white</option>
<option value="1200">yellow</option>
<option value="1400">red</option>
<option value="1600">black</option>
</select>
<br>
<input type="radio" name="cover" value="open">蓋なし
</fieldset>
</form>
</body>
</html>
*「linkage」設定のあるselect要素が対象。
それ以前の兄弟要素のラジオボタンに連動します。
この回答への補足
あやふやな質問にも関わらず、回答ありがとうございます。
文章構成などは下記のHTMLをしようしているのですが…。
「蓋付きのボックス」の<ラジオボックスをチェックしなければ選択できない>はクリアできたのですが、「蓋付きバスケット」の方で迷っています。
後はこれで合計金額がきちんと出ればいいのですが…、
もうすこしお力とお時間を頂けないでしょうか?
<html>
<head>
<title>簡単見積もり表</title>
<script Language="JavaScript">
<!--
function calc()
{
n = 0;
fObj = document.myFORM;
n += eval(fObj.sel0.options[fObj.sel0.selectedIndex].value);
n += eval(fObj.sel1.options[fObj.sel1.selectedIndex].value);
for (i=0; i<3; i++) if (fObj[i].checked) n += eval(fObj[i].value);
for (i=3; i<19; i++) if (fObj[i].checked) n += eval(fObj[i].value);
fObj.result.value = n;
}
function linker(evt){
var t = evt.target || evt.srcElement;
if(t.nodeName != "INPUT" || t.type != "radio") return;
var sel, i, s;
sel = t.form.getElementsByTagName("select");
for(i=0; s=sel[i++];)
if(/(^| )linkage( |$)/.test(s.className)){
t = s.previousSibling;
while(t && (t.nodeName != "INPUT" || t.type != "radio")) t = t.previousSibling;
if(t) s.disabled = !t.checked;
}
}
// --></script>
</head>
<body>
<form name="myFORM" action="#" onclick="linker(event)">
<BR>
<b>セットの果物を一つお選び下さい</b><br>
<input type="radio" name="ch1" value="100">りんご(100円)
<input type="radio" name="ch1" value="20">バナナ(20円)
<input type="radio" name="ch1" value="200">梨(200円)
<input type="radio" name="ch1" value="250">ブドウ(250円)
<input type="radio" name="ch1" value="150" checked>みかん(150円)<br>
<BR>
<b>リボンの色をお選びください</b><br>
<input type="radio" name="ch2" value="0" checked>赤(0円)
<input type="radio" name="ch2" value="2000">青(0円)
<input type="radio" name="ch2" value="0">金(10円)<br>
<hr>
<b>バスケットの形をお選び下さい</b><br>
<INPUT type="radio" name="cover" value="1200" checked>プラスチック丸型編み込み\1200<INPUT type="checkbox"
name="bx1" value="500">素材を木に変更(+\500)<BR>
<INPUT type="radio" name="cover" value="1500">編み込み四角\1500<BR>
<INPUT type="radio" name="cover" value="1500">編み込み楕円\1500<BR>
<INPUT type="radio" name="cover" value="1000">蓋なしボックスレインボー1000円<br>
<INPUT type="radio" name="cover" value="covered"><b>蓋付きのボックス</b>
色によって値段が変化します<br>
<select class="linkage" name="color_of_cover" disabled>
<OPTION value="0" selected>色を選択</OPTION>
<OPTION value="39900">赤1000円</OPTION>
<OPTION value="52500">青1000円</OPTION>
<OPTION value="54600">金1100円</OPTION>
</select><BR>
<INPUT type="radio" name="cover" value="0"><b>蓋付きバスケット</b>
形によって値段が変化します<BR>
<select name="sel1">
<OPTION value="0" selected>形を選択</OPTION>
<OPTION value="1500">丸 1500円</OPTION>
<OPTION value="1600">四角 1600円</OPTION>
<OPTION value="1600">楕円 1600円</OPTION>
</select>
<br><hr><BR>
<b>ご希望のオプションがあれば選択して下さい。(複数選択可)</b><BR>
<INPUT type="checkbox" name="bx1" value="300">クッション材\300
<INPUT type="checkbox" name="bx1" value="200">飾り\200<BR>
<INPUT type="checkbox" name="bx1" value="150">メッセージカード\150
<INPUT type="checkbox" name="bx1" value="2500">花束\2,500<BR>
<BR>
<hr>
<input type="button" value="合計を出す" onClick="calc()"><br>
合計<input type="text" name="result"><br>
</form>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- 防犯カメラ・監視カメラ・小型カメラ Windowsのカメラ機能。設定した通りのfpsでの撮影ができず、コマ落ち動画になる。修正するには? 2 2023/01/29 09:50
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
- Excel(エクセル) エクセルからビジオのリンク貼り付け 1 2023/03/30 17:51
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- 会計ソフト・業務用ソフト Excelの見積書の消費税をブルタウンで変更したい。 3 2023/02/14 16:41
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
CSVファイルを読みこみ、プルダ...
-
テーブルにおける行(セルにプル...
-
Selectボックスの幅を自動で広...
-
セレクトボックスのリンクと値...
-
onFocusOutが複数回呼ばれる!
-
親子連動型のselectを設置し、...
-
selectタグに直接onChangeを書...
-
value内に変数を入れたい
-
SELECTタグで変更禁止にする方法
-
画面表示とともに、テーブルの...
-
[javascript]</TDと</TR以外で...
-
特定<table>内の<td>の色を変える
-
ラジオボタンによるフォームの...
-
VBscriptの配列変数をJavascrip...
-
ハイパーリンクを別ウインドウ...
-
送信フォームで送信ボタンをお...
-
onchangeイベントを強制的に発...
-
onClick="this.form.submit
-
return trueとreturn falseの用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
Selectの中身をfor文で入れる
-
Selectボックスの幅を自動で広...
-
CSVファイルを読みこみ、プルダ...
-
セレクトを全て選択されていな...
-
jQuery セレクトボックスで選択...
-
UWSCのIE操作でプルダウンを選...
-
html selectの内容を初期値に戻す
-
現在時刻を取得してフォームのs...
-
javascriptでの2つのプルダウン...
-
selectタグに直接onChangeを書...
-
テーブルにおける行(セルにプル...
-
【javascript・PHP】プルダウン...
-
セレクトメニューで選択された...
-
ブラウザの戻るボタンを押した...
-
JQuery selectが反映されない
-
<textarea>にプルダウンを表示...
-
プルダウンで現在の年月日を取...
-
リストボックスの項目の順番を...
-
親ウィンドウのリスト値変更
おすすめ情報