
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ランキング
-
submitした値を返したい
-
formのsubmitイベントの発生に...
-
FormのonsubmitでJavaスクリプ...
-
1つのform内に2つのsubmitボタ...
-
フォームのvalueに配列を格納す...
-
指定したタグを書き換えるには?
-
C# 配列などの受け渡し
-
iframe内のformをサブミットす...
-
javascriptでASPにデータを渡す
-
submitボタンを上につけたい
-
JavaScript:現在フォーカスの...
-
return trueとreturn falseの用...
-
【jQuery】input nameの文字列...
-
プルダウンで選択すると、DBの...
-
ボタン無しでフォーム内容送信
-
【jsp/Java】チェックボックス...
-
テーブルの項目の値取得
-
onchangeイベントを強制的に発...
-
html selectの内容を初期値に戻す
-
ボタンをクリックして文字を置...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1つのform内に2つのsubmitボタ...
-
submitした値を返したい
-
1つのformで複数のactionをボタ...
-
POST時に要素を削除してからPOST
-
別ウィンドウへのsubmitの挙動...
-
iframe内のformをサブミットす...
-
Cookieに保存されない
-
submitボタンを表示することな...
-
フォームが空欄の時にフォーム...
-
FormのonsubmitでJavaスクリプ...
-
javascriptでASPにデータを渡す
-
[javaScript] form action
-
1つのページにformを2つ設置。2...
-
ENTERキーを無効にしたいのです...
-
cleartextを二つする
-
javascriptで .jpg , .jpeg , ....
-
focus()が上手くいかない
-
MacIE5でフォームを送りたい。...
-
Javascriptでlocation.hrefが妙...
-
POSTされた値でイベント実行
おすすめ情報