お世話になります。
セレクトメニューで選択された項目によって、HTMLの一部を表示したり非表示にしたりするにはどうすればいいでしょうか?
<select class = "select-box" tabindex="7" name='payment_string'>
<option value="1,ジャパンネット銀行,0">ジャパンネット銀行</option>
<option value="2,郵貯銀行,0">郵貯銀行</option>
<option value="3,イーバンク銀行,0">イーバンク銀行</option>
<option value="4,コンビニ決済,0">コンビニ決済</option>
<option value="5,クレジットカード,0">クレジットカード</option>
</select>
上記のようなセレクトメニューがあり、セレクトメニューが、『コンビニ
決済』、『クレジットカード』が選択されたときのみ下記の入力項目を表
示させたいと思っています。。
<div class='order_form_out_side_box'>
<div class='order_form_name'>
<p>ご住所</p>
</div>
<div class='order_form_contents'>
<p>郵便番号:<input type = "text" class="name-box1" accesskey="i" tabindex="11" name = "bango" onkeyup="setbango(this.value)" value ="" />
<br />
<p>都道府県:<input type = "text" class="name-box1" accesskey="j" tabindex="12" name = "ken" value ="" /></p>
<br />
<p>市・区:<input type = "text" class="name-box5" accesskey="k" tabindex="13" name = "shi" value ="" /></p>
<br />
<p>町・村:<input type = "text" class="name-box5" accesskey="l" tabindex="14" name = "machi" value ="" /></p>
<br />
<p>番地・建物名:<input type = "text" class="name-box5" accesskey="m" tabindex="15" name = "banchitate" value ="" /></p>
<br />
</div>
<br class='clear' />
</div>
<div class='order_form_out_side_box'>
<div class='order_form_name'>
<p>電話番号</p>
</div>
<div class='order_form_contents'><p><input type = "text" class="name-box6" accesskey="n" tabindex="16" name = "tel" value ="" />ハイフンなしでご入力ください。</p>
<br />
</div>
JavaScriptを利用してやるという事は分かったのですが、JavaScript
の知識がなく、どうすればいいのか分かりません。
どのようにすればこの機能を実現できるでしょうか?ご教授のほどよろ
しくお願いします。
No.2ベストアンサー
- 回答日時:
#1様の回答とほぼ同様ですが、違うのは最初に非表示にするのもスクリプトで行っているところくらいかな。
(スクリプトがオフだと表示されなくなっちゃうので…)
<html>
<head></head>
<body>
<select class = "select-box" tabindex="7" name="payment_string" id="payment_string">
<option value="1,ジャパンネット銀行,0">ジャパンネット銀行</option>
<option value="2,郵貯銀行,0">郵貯銀行</option>
<option value="3,イーバンク銀行,0">イーバンク銀行</option>
<option value="4,コンビニ決済,0">コンビニ決済</option>
<option value="5,クレジットカード,0">クレジットカード</option>
</select>
<div id="form_container">
<p>ここに表示したいフォームなどの内容
</div>
<script type="text/javascript">
document.getElementById('form_container').style.display = 'none';
document.getElementById('payment_string')./*@cc_on
@if(@_jscript) attachEvent('on' + @else @*/
addEventListener(/*@end @*/'change', function (evt) {
var t = evt.target || evt.srcElement;
var v = t.value.split(',')[0];
document.getElementById('form_container').style.display = (v==4 || v==5)?'block':'none';
}, false);
</script>
</body>
</html>
この回答への補足
ご回答頂きまして、ありがとうございます。
お教え頂いた方法をやってみましたら、思うような動作を実現する事が出
来ました。ありがとうございます。
その上で、後学の為に一点質問させて頂きたいのですが、
<script type="text/javascript">
document.getElementById('form_container').style.display = 'none';
document.getElementById('payment_string')./*@cc_on
@if(@_jscript) attachEvent('on' + @else @*/
addEventListener(/*@end @*/'change', function (evt) {
var t = evt.target || evt.srcElement;
var v = t.value.split(',')[0];
document.getElementById('form_container').style.display = (v==4 || v==5)?'block':'none';
}, false);
</script>
の部分を外部JSファイル『change.js』として保存し、<head>~</head>
の間に
<script type="text/javascript" src="http://www.hoge.com/change.js"></script>
として見たら動きませんでした。ロールオーバーのjsファイルなどは、
<head>~</head>の間に上記のような感じで外部ファイルを指定して
いるのですが、今回の場合は<body>~</body>の間に書かないと動かな
いようなのですがこの違いはなぜ起こるのでしょう?
かなり初歩的な質問なような気もするのですが、出来ればお教え頂け
れば幸いです。
No.4
- 回答日時:
#2です。
すでに#3様が回答してくださっていますが…
とりあえず、そのまま外部スクリプトにしても動作するには、スクリプトの読み込みタグ(<script>~</script>)を</body>の直前に置くことで可能です。
・・・・・
<script type="text/javascript" src="js/change.js"></script>
</body>
</html>
みたいに。(srcの内容は適当に短くしてますので悪しからず。)
もちろん <head>~</head> 間においても動作するようにもできますが、そのためには、スクリプト全体をonload時に実行するように修正する必要があります。(onloadイベントに追加するようにすればよい)
onloadイベントに追加されるファンクションの中で、changeイベントを追加するという構造になるので、ちょいと面倒だったので#2のような回答にしてしまいました。(条件付コンパイルって、あまり好きじゃないんだもん)
(グローバルな関数を作っちゃえば、それほどでもないんだけど。)
とりあえず、そのまま継ぎ足しちゃうとこんな感じ?(どうもかっこ悪いなぁ)
----- jsファイル -----
window./*@cc_on @if(@_jscript) attachEvent('on' + @else @*/addEventListener(/*@end @*/ 'load', function(){
document.getElementById('form_container').style.display = 'none';
document.getElementById('payment_string')./*@cc_on
@if(@_jscript) attachEvent('on' + @else @*/
addEventListener(/*@end @*/'change', function (evt) {
var t = evt.target || evt.srcElement;
var v = t.value.split(',')[0];
document.getElementById('form_container').style.display = (v==4 || v==5)?'block':'none';
}, false);
}, false);
No.3
- 回答日時:
#1 yyr446です。
詳しく条件を読んでなかったもので、私のサンプルで
ご要望とおりにするには、
<script type="text/javascript">
function setform(val){
if ((val=="4,コンビニ決済,0") || (val=="5,クレジットカード,0")){
document.getElementById("hoge").style.display="block";
}else{
document.getElementById("hoge").style.display="none";
}
}
</script>
としておいた上で、
<select class = "select-box" tabindex="7" name='payment_string' onchange="setform(this.value)">
----
<div id="hoge" class='order_form_out_side_box' style="display:none;">
----
<div id="hoge" class='order_form_out_side_box' style="display:none;">
とします。
こっちの方はonchangeでselectタグからハンドラーを登録しているので
jsはどこにあってもよいです。
#2様の解答は、
イベントハンドラーをアタッチしているので、
DOM要素をロードし終わった後にやらないといけないですね。
</body>の前とか
body onload=とか
window.onload function(){
}
とかで...
No.1
- 回答日時:
方法はいろいろあると思いますが、
一例として
入力項目の<div>にidを付けてcssで非表示にしておきます。
<div class='order_form_out_side_box' id="hoge" style="display:none;">
<select>でonchangeのイベントでjavascriptの関数を呼び出して
選択されたvalueによって<div>を表示・非表示を切り替えます。
<select class="select-box" tabindex="7" name='payment_string' onchange="setform(this.value)">
----------------------
(javascript)
function setform(val){
if (val="1,ジャパンネット銀行,0"){
document.getElementById("hoge").style.display="block";
}else{
document.getElementById("hoge").style.display="none";
}
}
この回答への補足
早速のご回答ありがとうございます。
ご教授頂いた方法を試してみたのですが、イマイチうまくいきません。
うまくいかない点として、
1『ジャパンネット銀行』がセレクトメニューの初期値になっていますが、『ジャパンネット銀行』から『コンビニ決済』や『クレジットカード』にするとその段階で住所の入力欄が出ますが、『コンビニ決済』や『クレジットカード』から『ジャパンネット銀行』に戻しても住所の入力欄が表示されたままになる。
2『郵貯銀行』や『イーバンク銀行』を選択したときにも住所の入力欄が出てしまう。
3住所の入力欄・電話番号の入力欄のdivに両方ともidを付けてみましたが、住所の入力欄は出ますが、電話番号の入力欄が出ない。
といったような状態です。
HTMLは下記のようになっています。
<div class='order_form_out_side_box' id='hoge' style='display:none;'>
<div class='order_form_name'>
<p>ご住所</p>
</div>
<div class='order_form_contents'>
<p>郵便番号:<input type = "text" class="name-box1" accesskey="i" tabindex="11" name = "bango" onkeyup="setbango(this.value)" value ="" /></p>
<br />
<p>都道府県:<input type = "text" class="name-box1" accesskey="j" tabindex="12" name = "ken" value ="" />
</p>
<br />
<p>市・区:<input type = "text" class="name-box5" accesskey="k" tabindex="13" name = "shi" value ="" />
</p>
<br />
<p>町・村:<input type = "text" class="name-box5" accesskey="l" tabindex="14" name = "machi" value ="" />
</p>
<br />
<p>番地・建物名:<input type = "text" class="name-box5" accesskey="m" tabindex="15" name = "banchitate" value ="" /></p>
<br />
</div>
<br class='clear' />
</div>
<div class='order_form_out_side_box' id='hoge' style='display:none;'>
<div class='order_form_name'>
<p>電話番号</p>
</div>
<div class='order_form_contents'>
<p><input type = "text" class="name-box6" accesskey="n" tabindex="16" name = "tel" value ="" />ハイフンなしでご入力ください。</p>
<br />
</div>
<br class='clear' />
</div>
引き続きご教授頂けましたら幸いでございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでselectボックスの<...
-
プルダウン 項目が多いので先頭...
-
selectメニューのselectedの位...
-
セレクトボックスの値から料金...
-
onFocusOutが複数回呼ばれる!
-
jQuery セレクトボックスで選択...
-
Selectボックスの幅を自動で広...
-
jspに組込んだJavaScript でjava文
-
セレクトを全て選択されていな...
-
JQuery selectが反映されない
-
return trueとreturn falseの用...
-
<JavaScript>tableタグを入力不...
-
value内に変数を入れたい
-
複数のプルダウンを1つにまとめ...
-
ラジオボタンでクリックした値...
-
onchangeイベントを強制的に発...
-
プルダウン選択を変更すると、...
-
<input>の選択肢をプルダウンメ...
-
selectのonChangeが動作しません
-
「本当に削除しますか」が正常...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン 項目が多いので先頭...
-
Selectボックスの幅を自動で広...
-
CSVファイルを読みこみ、プルダ...
-
jQuery セレクトボックスで選択...
-
【javascript・PHP】プルダウン...
-
セレクトを全て選択されていな...
-
JQuery selectが反映されない
-
ブラウザの戻るボタンを押した...
-
onchange等のイベントハンドラ...
-
Selectの中身をfor文で入れる
-
javascriptでselectボックスの<...
-
現在時刻を取得してフォームのs...
-
html selectの内容を初期値に戻す
-
HTMLコンボボックスへの項目追加
-
セレクトボックスの値から料金...
-
onFocusOutが複数回呼ばれる!
-
プルダウンで現在の年月日を取...
-
プルダウンとテキストの連動
-
jspに組込んだJavaScript でjava文
-
javascriptでの2つのプルダウン...
おすすめ情報