• 締切済み

子ウインドウから親ウインドウのselectボックスを変更したい

行いたいことは郵便番号による住所検索です。 PerlとMysqlをつかって郵便データは取得します。 親ウインドウのテキストボックスに郵便番号を入れて、子ウインドウで都道府県と以下住所を表示させます。 入力ボタンというものを押すと、親ウインドウの都道府県selectボックスと住所テキストボックスに入力させたいというロジックです。 ////////親フォーム////////////// <SCRIPT language="JavaScript"> function OpenZipWin1(){ var Myzip =document.fm.zip1.value; window.open("hoge.cgi?mode=zip_search&zipcode=" + Myzip,"new","width=500,height=270"); } </SCRIPT> <form action="hoge.cgi" method=post name="fm"> <input type=text name=zip1 size=10 maxlength=8 value=""><a href="javascript:void(0);" onClick="OpenZipWin1();">検索</a><br> <select name="pref"> <option value="">都道府県選択</option> <option value="1">北海道</option> <option value="2">青森県</option> <option value="3">岩手県</option> <option value="4">宮城県</option> <option value="5">秋田県</option> <option value="6">山形県</option> ・・・・ <option value="47">沖縄県</option> </select> <input type=text name=add value="" size=60> </form> ////////子フォーム////////////// <SCRIPT language="JavaScript"> function setForm() { var Mypref = document.subForm.pref.value; window.opener.document.?????????? = Mypref; var Mycity = document.subForm.city.value; window.opener.document.fm.add.value = Mycity; } //--> </SCRIPT> <p>検索結果</p> <form name="subForm"> <table border="0" cellpadding="5"> <tr> <td nowrap>郵便番号</td> <td>110-0001</td> </tr> <tr> <td>住所</td> <td> <input type="text" name="pref" size="20" value="東京都"> <input type="text" name="city" size="60" value="台東区 谷中"></td> </tr> </table></form> <p align=center><input type="submit" value="入力" onclick="javascript:setForm();self.close()"></p> <p align=center><a href="#" onclick="javascript:window.close()">閉じる</a></p> 問題なのは子ウインドウは都道府県が日本語で、親ウインドウはselectのvalueは数値、要素の方が日本語なのです。 子ウインドウの値を親ウインドウの要素の方と合わせたいのです。 上記の子ウインドウのJavaScriptで window.opener.document.?????????? = Mypref; の部分でうまくすればいいのかな・・・とは考えてみたもののうまくいきません。 恐れ入りますがご教授おねがいできませんでしょうか。 よろしくお願いいたします。

みんなの回答

  • hyter
  • ベストアンサー率73% (31/42)
回答No.2

子ウィンドウのjavascriptを↓のようにしたら動きました。 動作イメージはあってますかね? +--------------------------- function setForm() { var Mypref = document.subForm.pref.value; var Mycity = document.subForm.city.value; var o_Frm = window.opener.document.fm; // 親フォーム var o_SelectObj = o_Frm.all("pref"); // 親フォームの都道府県オブジェクト var o_AddObj = o_Frm.all("add"); // 親フォームの市区町村オブジェクト // 都道府県SELECT BOXの要素分ループ for (var i = 0; i < o_SelectObj.options.length; i++) { // 同じ都道府県であった場合 if (Pref == o_SelectObj.options[i].text) { // 選択状態にする o_SelectObj.options[i].selected = true; } } window.opener.document.fm.add.value = Mycity; } ---------------------------+ 変数名とかバラバラなのはご愛敬。。

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

いきなり親とか子とか余計なことまで考えるからわかりにくくなっているのでは? 最初は同じページでやってみると考えがまとまると思いますよ。 とりあえず値を元にselectを調整するのであれば、 selectにidを振ってアクセスし、optionsをforでまわして、 テキストをチェックし、値が合致したところでselectedを trueにしてやればいいでしょう。

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