• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptで選択肢が分かれるプルダウンでcgiにデータを送るには?)

javascriptで選択肢が分かれるプルダウンでcgiにデータを送るには?

このQ&Aのポイント
  • javascriptを使用して選択肢が変化するプルダウンでcgiにデータを送る方法について教えてください。
  • 選択したすべてのデータをcgiに送るためにはどうすればよいのでしょうか?
  • サンプルソースを使用して選択した選択肢のデータをcgiに送る方法を教えてください。

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

  • ベストアンサー
noname#84373
noname#84373
回答No.3

//@cc_on var opt = []; opt['最初'] = '果物 肉'; opt['果物'] = '梨 りんご'; opt['梨'] = '20世紀梨 ラフランス'; opt['りんご'] = 'ふじ つがる'; opt['肉'] = '牛肉 鶏肉'; opt['牛肉'] = '和牛 アメリカ牛'; opt['鳥肉'] = '名古屋コーチン 比内地鶏'; opt['---'] = '---'; window./*@cc_on @if(1)attachEvent('on'+ @else@*/addEventListener(/*@end@*/'load', function(){ setSelectOption( opt['最初'],'item1'); }, false); function setSelectOption( optionText, elementId ){ var element = getNode( elementId ); var text_array = optionText? ('--- '+optionText).split(' '):''; while( element.hasChildNodes() ) element.removeChild( element.lastChild ); for(var i=0, mx = text_array.length; i<mx; i++){ var n = new Option( text_array[i], (text_array[i]=='---'? '':text_array[i]) ,i==0,i==0); element.add( n/*@if(0)@*/, null /*@end@*/); } } function chk(){ checkSubmit( 'sousin', 'item1', 'item2', 'item3') } function getNode( e ){ return ( typeof(e) == 'string' )? document.getElementById(e) || document.getElementsByName(e)[0]: e; } function checkSubmit( btn ){ var i=f=1,o; while( o = arguments[i++]) f&=!!getNode( o ).value; getNode( btn ).disabled = !f; }

patsaysnow
質問者

お礼

ご回答頂きありがとうございます。 お教え頂いた通りにしてみたところ、無事外部jsで動作致しました。 本当にありがとうございました!

その他の回答 (2)

noname#84373
noname#84373
回答No.2

回答ではありませんが、別方式。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>TEST</title> <form method="post" action="xxx.cgi"> <p> 1<select name="item1" onChange="setSelectOption( opt[this.value], 'item2');chk()"></select> 2<select name="item2" onChange="setSelectOption( opt[this.value], 'item3');chk()"></select> 3<select name="item3" onChange="chk()"></select> <input type="submit" value="送信" id="sousin" disabled> </p> </form> <script type="text/javascript"> //@cc_on var opt = []; opt['最初'] = '果物 肉'; opt['果物'] = '梨 りんご'; opt['梨'] = '20世紀梨 ラフランス'; opt['りんご'] = 'ふじ つがる'; opt['肉'] = '牛肉 鶏肉'; opt['牛肉'] = '和牛 アメリカ牛'; opt['鳥肉'] = '名古屋コーチン 比内地鶏'; opt['---'] = '---'; setSelectOption( opt['最初'],'item1'); function setSelectOption( optionText, elementId ){ var element = getNode( elementId ); var text_array = optionText? ('--- '+optionText).split(' '):''; while( element.hasChildNodes() ) element.removeChild( element.lastChild ); for(var i=0, mx = text_array.length; i<mx; i++){ var n = new Option( text_array[i], (text_array[i]=='---'? '':text_array[i]) ,i==0,i==0); element.add( n/*@if(1) @else @*/, null /*@end@*/); } } function chk(){ checkSubmit( 'sousin', 'item1', 'item2', 'item3') } function getNode( e ){ return ( typeof(e) == 'string' )? document.getElementById(e) || document.getElementsByName(e)[0]: e; } function checkSubmit( btn ){ for( var i=1, f=1, v, m=arguments.length; i<m; i++ ){ v =getNode( arguments[i] ).value; f = (f & !!v); if(!v) d=1; } getNode( btn ).disabled = !f; } </script>

patsaysnow
質問者

補足

ご回答頂きありがとうございます。 サンプルソースまで作成して頂き、感謝しております。 このソースで試させて頂いたところ、無事送信することができました。 ちなみにjavascriptの部分を外部jsにしたいと思い、<script type="text/javascript">から</script>までを外部jsとしたのですが、そうするとjavascriptが効いていないようです。 外部jsにする際の記述方法が間違っているのでしょうか? もしよろしければお教え頂けると幸いです。 よろしくお願い致します。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

最終形がみえないのですが、とりあえずnameを適当につければ データとして送られませんか?

patsaysnow
質問者

補足

早速ご回答頂きありがとうございます。 上記のソースのままでnameを付けて、例えば「肉・鶏肉・比内地鶏」とプルダウンを選択して送信してもcgiには「肉」とだけしか表示されず、「肉」以降の「鶏肉」と「比内地鶏」のデータが送信されていないようなのです。 上記のようにプルダウンが選択肢で分かれていくjavascriptを使用して、cgiにデータを送ることはできないのでしょうか?

関連するQ&A