質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

3574閲覧

JavaScript プルダウン選択時の動作について

BANDIT1250FABS

総合スコア86

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/10/12 10:53

プルダウン内の「その他」選択時にのみテキストボックスを表示したいと思い、下記コードにて実装したのですがテキストボックスの内容をpostでcgiに渡せませんでした

JavaScript

1<script type="text/javascript" > 2 $(function() { 3 $('select[name="SELECTBOX"]').change( function() { 4 var $attribute = document.getElementById('VALUE').value; 5 var $s_input = document.getElementById('DIV'); 6 if( $(this).val() == 1 ) { 7 $s_input.innerHTML = $attribute + '<input type=\'hidden\' id=\'FORMNAME\' name=\'FORMNAME\' value= \' + $attribute + \'>' ; 8 } else if( $(this).val() == 2 ) { 9 $s_input.innerHTML = '<input type=\'text\' id=\'FORMNAME\' name=\'FORMNAME\' size=\'10\' maxlength=\'6\'>'; 10 } else { 11 $s_input.innerHTML = '選択してください'; 12 } 13 }).change(); 14}); 15</script> 16<form method="post" action="/cgi-bin/index.cgi"> 17aaa<input type="hidden" id="VALUE" name="VALUE" value="aaa"> 18 19<select id="SELECTBOX" name="SELECTBOX"> 20 <option value="" selected>選択してください</option> 21 <option value="1">選択1</option> 22 <option value="2">選択2</option> 23</select> 24 25<div id="DIV" name="DIV"></div> 26 27</form>

選択1の場合は、すでに表示されている「aaa」をdiv内に表示し、
選択2の場合は、テキストボックスを表示し、
postでcgiに、「aaa」もしくはテキストボックス入力値を
同じパラメータで渡したいと考えておりますが
どのようにコーディングすればよいかご教授いただけますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

毎回 input要素を生成しなくても非表示にすればいいのでは。

HTML

1<script type="text/javascript" > 2$( function() { 3 $( 'select[name="SELECTBOX"]' ).change( function() { 4 var attribute = ''; 5 var hide_flag = true; 6 $( '#FORMNAME' ).val( '' ); // 初期化 7 if ( $( this ).val() == 1 ) { 8 attribute = $( '#VALUE' ).val(); 9 } else if( $( this ).val() == 2 ) { 10 hide_flag = false; 11 attribute = ''; 12 } else { 13 attribute = '選択してください'; 14 } 15 $( '#DIV' ).toggleClass( 'hide', hide_flag ); 16 $( '#SPAN' ).html( attribute ); 17 } ).change(); 18} ); // (未テスト) 19</script> 20<style> 21.hide input, span { 22 display: none; 23} 24.hide span { 25 display: inline; 26} 27</style> 28<form method="post" action="/cgi-bin/index.cgi"> 29 <input type="hidden" id="VALUE" name="VALUE" value="aaa"> 30 <select id="SELECTBOX" name="SELECTBOX"> 31 <option value="" selected>選択してください</option> 32 <option value="1">選択1</option> 33 <option value="2">選択2</option> 34 </select> 35 <div id="DIV" name="DIV" class="hide"><span id="SPAN" name="SPAN"></span><input type="text" id="FORMNAME" name="FORMNAME" size="10" maxlength="6"></div> 36</form>

投稿2016/10/12 21:17

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ほとんどよさそうでしたが、$attributeが文字列のままなっていたのと、submitボタンがないので追加しました。余談ですが、jQueryの記述とそうでない記述が混ざっているので、どちらかに寄せたほうがいいかもしれませんね

html

1<script type="text/javascript" > 2 $(function() { 3 $('select[name="SELECTBOX"]').change( function() { 4 var $attribute = document.getElementById('VALUE').value; 5 var $s_input = document.getElementById('DIV'); 6 if( $(this).val() == 1 ) { 7 $s_input.innerHTML = $attribute + '<input type=\'hidden\' id=\'FORMNAME\' name=\'FORMNAME\' value= \'' + $attribute + '\'>' ; 8 } else if( $(this).val() == 2 ) { 9 $s_input.innerHTML = '<input type=\'text\' id=\'FORMNAME\' name=\'FORMNAME\' size=\'10\' maxlength=\'6\'>'; 10 } else { 11 $s_input.innerHTML = '選択してください'; 12 } 13 }).change(); 14}); 15</script> 16<form method="post" action="/cgi-bin/index.cgi"> 17aaa<input type="hidden" id="VALUE" name="VALUE" value="aaa" > 18 19<select id="SELECTBOX" name="SELECTBOX"> 20 <option value="" selected>選択してください</option> 21 <option value="1">選択1</option> 22 <option value="2">選択2</option> 23</select> 24 25<div id="DIV" name="DIV"></div> 26<input type='submit'> 27</form>

投稿2016/10/12 20:28

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BANDIT1250FABS

2016/10/13 00:59

ご回答いただき、ありがとうございます。 やはりsubmitで渡した値は受け取れないみたいです。 テキストボックスをハードコーディングしたら受け取れたんですが… innerHTMLの仕様の問題ですかね
popobot

2016/10/13 01:44

よくわかりませんが... ブラウザのデベロッパーツールで、innerHTMLで作成したinputがおかしくないかみてみたらどうでしょうか。ブラウザによって挙動が違う可能性もあるかもしれません。
guest

0

参考までに

javascript

1$(function() { 2 $('select[name="SELECTBOX"]').on('change',function(){ 3 var attribute = $('#VALUE').val(); 4 switch($(this).val()){ 5 case "1": 6 $('#DIV').html(attribute).append($('<input>').attr({type:"hidden",id:"FORMNAME",value:attribute})) ; 7 break; 8 case "2": 9 $('#DIV').html($('<input>').attr({type:"text",id:"FORMNAME",name:"FORMNAME",size:10,maxlength:6})) ; 10 break; 11 default: 12 $('#DIV').html('選択してください'); 13 } 14 }).change(); 15}); 16

HTML

1<form method="post" action="/cgi-bin/index.cgi"> 2aaa<input type="hidden" id="VALUE" name="VALUE" value="aaa"> 3 4<select id="SELECTBOX" name="SELECTBOX"> 5 <option value="" selected>選択してください</option> 6 <option value="1">選択1</option> 7 <option value="2">選択2</option> 8</select> 9<div id="DIV" name="DIV"></div> 10<input type='submit' value="go"> 11</form>

投稿2016/10/13 01:09

yambejp

総合スコア114742

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問