• ベストアンサー

Java scriptのonchangeについて 続

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

  • fm0606
  • お礼率13% (100/761)

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

  • ベストアンサー
回答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

  • Java scriptのonchangeについて

    HTML&PHPで動的にアンケートフォームを作成しているものです。 都道府県、県庁所在地をプルダウンで選択したいと思っております。 「onChange=onChange=this.form.submit();」 だと、<form>のアクション先へ飛ぶことになります。 プルダウン選択を変えるとアンケートのデータが揃うまで同じモジュールに飛ばしたいと考えています。 決定ボタンで次のモジュールへ遷移させる方法はございますか?

  • onChange に関して

    onChange に関して わかりにくい内容で申し訳ありません。 PHPで作成されているプログラムの中に、Javascriptを組み込みたいと考えています。 処理の動きとしては、あるプルダウンが選択された場合、すぐさまその値をもとにしてDBへ 検索しに行くというものです。 通常、PHPだけの処理の場合、POST等を用いて、ボタンが押されたら違うphpファイルへ値を 送る事が可能かと思われます。 その処理をJavascript で選択されたらすぐに検索、表示というような動きをしたいと考えて います。 同じソースの中でなら、例えば選択された値を別のテキストに表示するというような事はした 事はありますが、そもそもJavascript でPUT 処理のような事は可能なのでしょうか??? 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

  • onChangeだと思うのですが・・・

    <FORM> <SELECT> <OPTION selected>タイトル</OPTION> <OPTION>タイトル2</OPTION> <OPTION>タイトル3</OPTION> </SELECT> <input type="button" value="ボタン" onClick="location.href='mailto:xxx@xxx?subject=タイトル'"> </FORM> セレクトの選択に合わせてメールのタイトルを変えたいのですが うまくいきません。 onChangeを使うとフォームの値としては取得はできますが・・・ 上記のような場合はどうすればよいのでしょうか? 教えてください。よろしくおねがいします。 仕事の関係で至急作らなくてはいけなくなりまして、 困っています。

  • onChangeの使い方について教えてください。

    javascriptで困っています。助けてください。 テキストボックスに入力された値をonChangeで検出し、入力内容をチェックしようとしています。 テキスト入力後、テキストボックスからフォーカスを外せば、問題なく作動するのですが、 テキストを入力し、フォーカスを外さずに、そのまま送信ボタンを押すと、 チェック結果を待たずに、次のファイル(画面)に移ってしまいます。 多分、onChangeを使う上で、よく発生する問題かと思うのですが、 みなさん、どのように回避されているのでしょうか? <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!-- function check(){ alert('チェック'); } //--> </script> </head> <body> <form method="get" action="reg.php"> タイトル<br> <input type="text" name="title" onChange="check()"><br> <input type="submit" value="送信"><br> </form> </body> </html>

  • onChange()メソッド

     失礼致します。 質問させてください。 今jspのtextboxフォームにjavascriptの機能をつけようとしています。付ける機能は簡単に言うと、値がフォームに入力されたとき(もしくは入力されてフォーカスが外れたとき)、その値が100より大きければアラートを出す機能です。 // jsp <input type = text size="12" name="hi" value = <%= hi %> onchange="fast('<%=hi%>');"> // Javascript <script language="javascript" type="text/javascript"> function fast(hi) if (hi > 100 ) { alert("100以下で入力してください");   } しかしこのままだとテキストボックスの値変更前の値が比べられてしまいます。onblurにしても同じでフォーカスを当てる前の値が参照されてしまいます。スクリプトのほうでdocument.frm.hi.value= ・・と値を取得すればフォームがひとつの場合うまくいくのですが、複数個になるとフォームの指定に問題が出てきます。onchengeではなく、何か値を変更した後の値を参照できるような方法はないでしょうか? よろしくお願いします。

  • プルダウン 値保持 onchange

    失礼します、現在年月のプルダウンを作成しており プルダウン自体は年月の作成ができなのですが再読み込みした際に プルダウンに選択した値を保持して欲しいです。 現在リダイレクト先を自身にしております。また、onChangeでプルダウンをした際に読み込むようにしています。 ご教授頂きたいです。宜しくお願い致します。 htmlに埋め込んでいるので読みにくいかと思いますがご了承ください <form action="<?php $self ?>" method="POST"> <select name = "year" onChange="javascript:submit()"> <?php for ($y = 2000; $y < date(Y)+1; $y++) :?> <?php if($s == 0) : ?> <option value="<?php echo $y ?>">選択してください</option>; <?php ++$s ?> <?php endif; ?> <option value="<?php echo $y ?>"><?php echo $y ?></option> <?php endfor; ?> </select> <?php $a = array('1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'); ?> <select name = "month" onChange="javascript:submit()"> <?php foreach ($a as $key => $value) :?> <?php $b = $key + 1 ?> <?php if($h == 0) : ?> <option value="<?php echo $y ?>">選択してください</option> <?php ++$h ?> <?php endif; ?> <option value="<?php echo $b ?>"><?php echo $value ?></option> <?php endforeach; ?> </select> </form>

    • ベストアンサー
    • PHP
  • 【C#】 スクリプトが分かりません。

    【環境】 VisualStadio2008 Active Reports 3.0 【やりたいこと】 フォーム1で入力した値をレポートに渡し、Form2のViewerで表示(尚、DBは使用しない) 【現状】 ・Form1、レポートにそれぞれラベル2個、テキストボックス2個配置 ・Form1にレポート呼び出し用のボタンを配置 ・ボタンを押すと、Form2のViewerにレポートが表示される(ただし、値は渡されていない) 肝心の入力値をレポートに渡すためには、Scriptになにか記述しないといけないのですが、それが分かりません。助けて下さい。

  • プルダウンメニューの利用

    htmlのプルダウンメニューを使用した値計算のインタフェースを作成したいと思っています。 プルダウンメニューに設定するメニュー項目に値を設定し、 onChangeを使用して、その値だけをPHPプログラムに渡すようにしたいのですが、 JavaScript部分をどのように書けばいいのか判りません。 どなたかご教授お願いいたします。 <form name="formtest" action="test.php" method="post"> <table> <tr> <th>カテゴリ*</th> <td> <SELECT NAME="iPlanet" onchange=""> <OPTION VALUE="9" selected>初期値 <OPTION VALUE="0">サンプル1 <OPTION VALUE="1">サンプル2 </SELECT> </td></tr> </table> </form> onchangeでValueの値をPHPに送りたいのです。 よろしくお願いします。

  • form 内 onChange

    恐れいります。 <form>内で、もう一つ<form>を作成し、送信したいのですが、 なかなかうまくいきません。form内のformは、selectボックスで、選択時に自ページにsubmitさせるようにしたいのですが。。 <form action="./xxx.cgi" method="POST"> <input type="text" name="xxx"> <form action="./" method="POST"> <select name="YYY" onChange="this.form.submit()"> <option value="ddd">ddd <option value="eee">eee </select></form> <input type="text" name="xxx"> <input type="submit" value="送信"> </form> よろしくお願いします。

    • ベストアンサー
    • HTML
  • 子ウィンドウの操作

    処理概要:親ウィンドウからボタンクリック時にjavascriptのみで      子ウィンドウを作成し、遷移させた後、子ウィンドウの      フォームをサブミットする。 -------以下ソース-------- var url = "/index.html"; hWin=window.open("",""); window.hWin.location.href=url; setTimeout(a,10000); function a(){ window.hWin.document.form.submit(); // window.hWin.document.form.name.value = "住友"; // window.hWin.document.form.button1.click(); }  * index.html にはformというフォームがあり、nameという   テキストボックスとbutton1 というボタンをフォーム内に   持っているとします。 以上のような簡単なものですが、7行目のsubmitでこけます。 window.hWin.document.formがないようでヌルポになります。 親から子ウィンドウのサブミットをjavascriptだけで制御 できないでしょうか。 また、できればコメントアウトしているところ、 DOM要素を指定して値をテキストボックスに入れたり フォームをボタンによりクリックしてサブミットもしたいです。 ちなみに、setTimeout を利用しているのは、遷移が終わり、子ウィンドウの要素が確実に作成されている状態にするためです。 また、遷移先にSSLを設定している部分と設定していない部分があり、javascriptの途中で"ここに遷移していいですか?"みたいなダイアログが表示されます。"混雑しているページの処理"をインターネットオプションから"有効"にする(ダイアログを表示するではなく)と表示されないのですが、奨励されないので 他にいい方法はないでしょうか。