• ベストアンサー

Java scriptのonchangeについて 続

すみません、前回の質問で意図がうまく伝わらなかったみたいなので詳しくします。 現在アンケートフォームを動的に作成しています。 プルダウンの値はDBから引っ張るので 今回はJavascriptを使用(プルダウンの作成に関しては)しません。 PHPより1回1回値をとりカテゴリー別(4連続プルダウ運)に値をセットする形になります。 今作成中のものは <select onChange=onChange=this.form.submit();> で自モジュールを呼び、プルダウン(4連続)に DB値をセットしてます。 フォームの情報が出揃ったところで決定ボタンを押し、 フォーム確認モジュールを呼びたいのですが、 <form>タグのアクション先が自モジュールのため 遷移できません。 要は、プルダウン時と決定ボタン押下時の 遷移先を変えたいのです。 これはJavascriptを使用なのでしょうか? Javascriptは初心者のためなるべく具体的にお願いいたします。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.4

function myChange() { this.form.action = "xxxx.cgi"; this.form.submit(); } function mySubmit() { this.form.action = "yyyy.cgi"; this.form.submit(); } ------------------------------------------ <select onChange="myChange();> <input type="button" value="送信" onClick="mySubmit();">

fm0606
質問者

お礼

ありがとうございます。 できました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • NTJ
  • ベストアンサー率44% (46/103)
回答No.3

但し、実用的なものを作るのなら、全く様相は変わってきます。 <SCRIPT> var dat2=[ ['東京','千代田区'], ['東京','千代田区'], ・ ・ ・ ['大阪','大阪市'], ['大阪','東大阪市'], ・ ・ ['沖縄','石垣市']]; var dat1=new Array(); var wk=""; for(var i in dat2){ if(wk!=dat2[i][0]){ dat1.push(dat2[i][0]); wk==dat2[i][0]; } } function mkSelect(name1,name2){ var wkStr='chSelect(this.value,'+name2+');' document.write('都道府県'); document.write('<SELECT name="'+name1+'" onchange="'+wkStr+'">'); for(var i in dat1){ document.write('<OPTION value="'+dat1[i]+'">'+dat1[i]+'</OPTION>'); } document.write('</SELECT>'); document.write('都市名'); document.write('<SELECT name="'+name2+'"); document.write('<OPTION></OPTION>'); document.write('</SELECT>'); } function chSelect(cd,name2){ var wk=""; for(var i in dat2){ if(cd==dat2[i][0]){ wk+='<OPTION value="'+dat2[i][1]+'">'+dat2[i][1]+'</OPTION>'; } } } </SCRIPT> FORMエレメント内のSELECTを配置したい場所 <SCRIPT>mkSelect('都道府県の項目名','市町村の項目名')</SCRIPT> これで充分。 dat2の中身は、それこそDBからでも抽出してください。 dat1、dat2ともに外部ファイル化し、内容を全て、DB出力で作ればさらに楽でしょう。

fm0606
質問者

補足

ご回答、ご忠告ありがとうございます。 いろいろと事情がありまして 大変でございます。 現段階でプルダウンのところは作り終えまして 決定ボタンで遷移するまできております。 今回のはNo2のやり方が妥当だと思いますが、 メソッドがPOSTの場合をお願いします。 これも説明不足でしたね。

すると、全ての回答が全文表示されます。
  • NTJ
  • ベストアンサー率44% (46/103)
回答No.2

では、具体的な回答を。。 <select onChange=onChange=this.form.submit();> これ、違います(^^; <select onChange="this.form.submit();"> やるなら、これが正しいです。 その上で・・・ 上記の手法でどうしてもやりたいと言う事なら、 以下の手順でよいでしょう。 <SCRIPT> function submitSelect(obj){ var arg=new Array(); for(var i=0;i<obj.elements.length;i++){ arg.push(obj.elements[i].name+'='+obj.elements[i].value); } location.href='SELECT用CGIのURL'+'?'+arg.join('&'); } </SCRIPT> <SELECT onChange="submitSelect(this.form);"> これで目的はほぼ、達成できるでしょう。

すると、全ての回答が全文表示されます。
  • NTJ
  • ベストアンサー率44% (46/103)
回答No.1

あなたの作っているアンケートフォームでは、SELECTエレメントの項目を選択するたびに、一々サーバーへアクセスしてしまいます。 それでは利用者に非常なストレスを与えてしまいます。 ユーザー側での画面動作は全てJavaScriptのみで賄って、ユーザーに精神的負担を与えないようにすべきと思います。

すると、全ての回答が全文表示されます。

関連するQ&A