![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPとjavascriptで検索(別ページ)→検索結果表示(test.php)→指定リンククリック(test.php)→チェックボックスの値を親ウィンドウ(test.php)から子ウィンドウ(aaa.php、bbb.php)へ渡し、更新→親ウィンドウ(test.php)に反映→検索ボタン押下で再検索(test.php)という流れのプログラムを書いています。
親ウィンドウ(test.php)に反映までは実装できましたが、その後検索でsubmitすると、test.phpではなくaaa.phpかbbb.phpへ遷移してしまいます。
色々試してみましたがどうしてもわからず、どなたかご教授いただけませんでしょうか。
よろしくお願い致します。
[親ウィンドウ]
function setDown(type) {
window.open("", "test") ;
if(type == 'aaa') {
window.document.fm.action = "aaa.php";
} else if(type == 'bbb') {
window.document.fm.action = "bbb.php";
}
window.document.fm.target = "test";
window.document.fm.method = "POST";
window.document.fm.submit();
}
<form action="index.php" method="post" name="fm">
<a href="javascript:void(0)" onClick="setDown('aaa');"return false>aaa指定</a>
<div id="aaaDis"></div>
<a href="javascript:void(0)" onClick="setDown('bbb');"return false>bbb指定</a>
<div id="bbbDis"></div>
<input type="text" name="keyword">
<input type="submit" name="search" value="検索">
</form>
[子ウィンドウ aaa.php]
if($_REQUEST["mode"] == "set") {
foreach($_REQUEST["sample"] as $num => $val) {
$addName .= $Func -> GetGenreName($val) . ",";
$addNo .= $val. ",";
}
$addName = rtrim($addName ,",");
$addNo = rtrim($addNo ,",");
<script type="text/javascript">
<!--
var addName = '<?php echo $addName ; ?>';
var addNo = '<?php echo $addNo ; ?>';
var sampleName = addName.split(",");
var sampleNo = addNo.split(",");
if(sampleNo) {
window.opener.document.getElementById('aaaDis').innerHTML = "";
for (var i in sampleNo){
window.opener.document.getElementById('aaaDis').innerHTML += '<input type="checkbox" name="sample[]" value="'+sampleNo[i]+'" checked>'+sampleName[i];
}
}
window.close();
// -->
</script>
}
<form action="aaa.php" method="post">
<input type="hidden" name="mode" value="set">
<input type="submit" value="設定">
<input name="sample[]" TYPE="checkbox" VALUE="1">1111
・
・
・
</form>
No.1ベストアンサー
- 回答日時:
こんにちは。
実際に試していないのでちがっていたら申し訳ございません。
おそらく
window.document.fm.action = "aaa.php";
または
window.document.fm.action = "bbb.php";
にてformのaction先を変えてしまっているので検索を押した時もどちらかに飛んでしまいます。
(多分aaa.phpまたはbbb.phpの処理を呼ぶ前に検索するとindex.phpに飛ぶのでは)
<input type="button" value="検索" onclick="exeSearch();">
submitではなくボタンにして
function exeSearch() {
document.fm.action="./index.php";
document.fm.target = '';
document.fm.submit();
}
にすることでもとのformアクションであるindex.phpにサブミットすることができると思います。
LancerVII様
回答ありがとうございました。
ご教授いただきました通りに実装して動作確認できました。
サンプルソースまでご提供いただき本当にありがとうございました。
No.2
- 回答日時:
function setDown(type)のwindow.document.fm.submit();
のうしろに下記2行を追加してもいけると思います。
document.fm.target = "_self";
document.fm.action="index.php";
理由は、#1の方が説明しているとおりです。
一時的なDOM操作ですので、親ウインドウを更新すると遷移先が元に戻ると思います。
FireFoxでいう、firebugのような現在のDOMを表示できるような
デバッグツールを使用すると、こういう時に対処しやすいと思います。
javascriptでDOMの操作をしても、ブラウザの「ソースの表示」には
反映されないので。
shaka001様
回答いただきありがとうございました。
shaka001様の言われる方法でも動きました。
とても勉強になりました。
firebugは存在は知っていましたが、使ったことがなかったので試してみたいと思います。
貴重な情報をありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タブキーでなくエンターキーで...
-
javascriptで .jpg , .jpeg , ....
-
formのsubmitイベントの発生に...
-
複数サブミットで、一つだけ新...
-
inputのvalueを変数として使うには
-
Chromeで複数submit
-
iframe内のformをサブミットす...
-
<JavaScript>tableタグを入力不...
-
<input>の選択肢をプルダウンメ...
-
至急!GetElementById でtdの...
-
return trueとreturn falseの用...
-
ハイパーリンクを別ウインドウ...
-
TD内のチェックボックスの位置...
-
コピペを禁止するtextarea
-
javascriptでセレクトボックス...
-
未入力のラジオボタンに、alert...
-
value内に変数を入れたい
-
ASP エラーチェック VBScript
-
onchangeイベントを強制的に発...
-
ボタン2回押しを無効にしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FormのonsubmitでJavaスクリプ...
-
submitした値を返したい
-
javascriptでASPにデータを渡す
-
別ウィンドウへのsubmitの挙動...
-
フォームが空欄の時にフォーム...
-
複数のフォームを一括で自動送...
-
iframe内のformをサブミットす...
-
1つのform内に2つのsubmitボタ...
-
POST時に要素を削除してからPOST
-
1つのページにformを2つ設置。2...
-
formのsubmitイベントの発生に...
-
focus()が上手くいかない
-
1つのformで複数のactionをボタ...
-
リンク先アドレスの一部にテキ...
-
タブキーでなくエンターキーで...
-
JavascriptからSubmitして画面...
-
同意チェックボックスはひとつ...
-
指定したタグを書き換えるには?
-
javascriptで .jpg , .jpeg , ....
-
chromeでフォームの値が取得で...
おすすめ情報