- ベストアンサー
送信先CGIの選択
<form method="post" action="file.cgi"> <input type="hidden" name="password" value="xxx"> <input type="hidden" name="action" value="zzz"> <input type="text" name="name" size="50" value=""> </form> この場合、送信先CGIがfile.cgiに固定されていますが、action="送信先"をリストボックス等を使って複数選択できるようにしたいと考えています。可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
元のformに nameに"action"を持つinputがありましたね… 属性名と同じnameを持つ要素が競合した場合、IE7では要素の方を優先して採用するようです。 ヘッダに書いた関数を以下のものと置き換えてみてください。 function setAction(Form){ Sel = Form.getElementsByTagName('select')[0];// [0]はフォーム内の0番目のselectの意 var newAction = document.createAttribute('action'); newAction.value = Sel.options[Sel.selectedIndex].value; Form.setAttributeNode(newAction); }
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
#1です。 そのCGIについてよくわからないので、どうすれば正解かはわかりませんが 気になったのは… (1)</textarea>がない。 (2)送信先選択の「過去ログ」(2番目のオプション)の value が file2.cgi のままになっている。
お礼
有難うございます。</textarea>を書き忘れてしまいました。度々すみません。 お教え頂いたソースでテストした時にはFirefoxを利用していました。 そして、CGIでテストした時にはWindowsXPで、バージョンアップしたInternet Explorer7を利用しました。 もしかしたらブラウザが関係しているかと思い、Firefoxで試しましたところ、CGI側でも正常に動作いたしました。 Internet Explorer7では動作しないようです。 普段はInternet Explorer7を使っているのですが、このブラウザで動作するようにはなりませんでしょうか。何度もお手数をおかけし、恐縮ですが、よろしくお願いいたします。
- steel_gray
- ベストアンサー率66% (1052/1578)
Javascriptを利用すると切り替える事ができます。 例) <html> <head> <title></title> <script type="text/javascript"> function setAction(Form){ Sel = Form.getElementsByTagName('select')[0];// [0]はフォーム内の0番目のselectの意 Form.action = Sel.options[Sel.selectedIndex].value; } </script> </head> <body> <form action="file.cgi" onsubmit="setAction(this)"> 送信先 <select> <option value="file.cgi" selected>FILE</option> <script type="text/javascript"> document.write('<option value="file2.cgi">FILE2</option>'); document.write('<option value="file3.cgi">FILE3</option>'); </script> </select> <noscript> javacriptが利用できる環境では送信先を選択する事ができます </noscript> <input type="submit"> </form> </body> </html>
お礼
※以下、ソースの続きです。 日付<input type="text" name="year" value="2007" size="4">年 <select name="mon"><option value="1">1<option value="2">2<option value="3">3<option value="4">4<option value="5">5<option value="6">6<option value="7" selected>7<option value="8">8<option value="9">9<option value="10">10<option value="11">11<option value="12">12</select>月 <select name="mday"><option value="1">1<option value="2">2<option value="3">3<option value="4">4<option value="5">5<option value="6">6<option value="7">7<option value="8">8<option value="9">9<option value="10">10<option value="11">11<option value="12">12<option value="13">13<option value="14" selected>14<option value="15">15<option value="16">16<option value="17">17<option value="18">18<option value="19">19<option value="20">20<option value="21">21<option value="22">22<option value="23">23<option value="24">24<option value="25">25<option value="26">26<option value="27">27<option value="28">28<option value="29">29<option value="30">30<option value="31">31</select>日 <br> 題名<input type="text" name="title" size="100" value=""><br> 内容<textarea rows="20" cols="90" wrap="soft" name="body"><br> <input type="submit" value="修正"> <input type="reset" value="取消"> <br> 修正後画面 <input type="radio" name="page" value="modify" checked>そのまま <input type="radio" name="page" value="now">もどる <input type="hidden" name="retpage" value="now"> </p> </form> </body> </html>
補足
有難うございます。上記ソースで試しましたところ、やりたいことが出来ました。ただ、私が利用したいCGIに組み込みましたところ、うまく動作してくれませんでした。ソースは以下の通りです。お手数ですが、よろしくお願いいたします。 <html> <head> <title></title> <script type="text/javascript"> function setAction(Form){ Sel = Form.getElementsByTagName('select')[0];// [0]はフォーム内の0番目のselectの意 Form.action = Sel.options[Sel.selectedIndex].value; } </script> </head> <body> <form method="post" action="file.cgi" onsubmit="setAction(this)"> 送信先 <select> <option value="hfile.cgi" selected>通常</option> <script type="text/javascript"> document.write('<option value="file2.cgi">過去ログ</option>'); </script> </select> <input type="hidden" name="password" value="yezvt"> <input type="hidden" name="action" value="modify"> <input type="hidden" name="dfn" value="index.html"> <input type="hidden" name="did" value="7_330">
お礼
ご丁寧にご回答に感謝致します。おかげ様でInternet Explorerでも動作することができ、大変助かりました。