子windowsからsubmit()後にclose()を実行するとsubmit()が起動しないが発生
①function ok()でclose();を実行すると、submit();が実行されない、子windowはcloseされる
②function ok()でclose();をコメント化、submit();が実行されるが、子windowはcloseされない
③期待値は submit();が実行され、子windowはcloseされる
下記の3ファイルからなるアプリケーションにおいての
具体的な解決方法をお知らせください
//--HTML文 ファイル名(GZ.htm)----------------------------------------
<html><body>
<meta http-equiv=Content-Type content='text/html; charset=Shift_JIS; '>
<script src=GZ.js></script>
<form name=myform action='GZ.cgi' method='post'>
<input type=hidden name=Htm value='HTM'>
<center>
<a onClick=CmdBox()><!--フォーム送信時CmdBox関数を定義する-->
<img src='img.jpg' height=150><br>
img.jpg
</a>
</form></body></html>
//--script文 ファイル名(GZ.js)---------------------------------------
function ok(){alert("ok(0:");
// close(); //コメントアウトしないとsubmit()が起動されなう
document.all("myform").submit();
}
function can(){alert("can(0:");
close(); //自身windowのクローズ(正常動作)
}
function CmdBox(){//コマンドボックスを表示する
Dialog_win=window.open( '表示','Dialog_win','width='+50+',height='+50+',left='+50+',top='+250);
Dialog_win.document.write('<html><body>'
+"<"+"script src=GZ.js><"+"/script>"
+"<meta http-equiv=Content-Type content='text/html; charset=Shift_JIS;'>"
+"<form name=myform action=GZ.cgi method=post>"
+"<input type=hidden name=Htm value='HTM'>"
+"<center>コマンドボックス<br><br>"
+"<input onClick='ok();' type=button value=回転>"
+"<input onClick='can();' type=button value=キャンセル>"
+'</form></body></html>'
);
}
//--perlによるCGI文 ファイル名(GZ.cgi)------------------------------
#!/usr/local/sbin/perl
use Cwd;
#use Win32;Win32::MsgBox("GZ.cgi=".cwd());
read(STDIN,$read_STDIN,$ENV{'CONTENT_LENGTH'});
open STDERR," >","GZ.log";
print STDERR "GZ.cgi:cwd()=".cwd()."\n\$read_STDIN=\n$read_STDIN\n";
#$read_STDINの内容による個々の処理、画像回転等
$l=1;print STDOUT $STDOUTstr="<!DOCTYPE html>\n"
."<html>\n"
."<head>\n"
."<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS;'>\n"
."<meta http-equiv='refresh'content='0;url=GZ.htm'>\n"
."</head>\n"
."</html>\n";
close STDOUT;
print STDERR $STDOUTstr;
close STDERR;
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No2です。
何度もすみません、以下の方が、今後何か変えたくなったとき多少見通しが良いかもしれません。
//--script文 ファイル名(GZ.js)---------------------------------------
function CmdBox(){//コマンドボックスを表示する
// 子windowを開く
Dialog_win=window.open( '','Dialog_win','width=50,height=50,left=50,top=250');
// 子windowに表示するものは3つ。テキスト、okボタン、cancelボタン
const frag = document.createDocumentFragment(),
box_text = Object.assign(document.createElement('p'), {
style:'text-align:center;',
textContent: 'コマンドボックス'
}),
ok_btn = Object.assign(document.createElement('input'), {
type:'button',
value:'回転'
}),
cancel_btn = Object.assign(document.createElement('input'), {
type: 'button',
value: 'キャンセル'
});
// テキストと、ok,cancelボタンを子windowに格納する
frag.appendChild(box_text);
frag.appendChild(ok_btn);
frag.appendChild(cancel_btn);
Dialog_win.document.body.appendChild(frag);
// ok,cancelボタンがクリックされたとき
Dialog_win.addEventListener('click',(e)=>{
if(e.target === ok_btn){
Dialog_win.alert('OK');
document.forms.myform.submit(); // 親windowからform送信
Dialog_win.close();
}else if(e.target === cancel_btn){
Dialog_win.alert('cancel');
Dialog_win.close();
}
},false);
}
いずれにせよ、
・フォーム送信は親windowがする、
・クローズ命令は子windowにする、
というところだけがポイントです。
No.2
- 回答日時:
>子windowでOK、キャンセルの選択のケースをお願いします
こんな感じでしょうか。
//--script文 ファイル名(GZ.js)---------------------------------------
function CmdBox(){//コマンドボックスを表示する
Dialog_win=window.open( '表示','Dialog_win','width=50,height=50,left=50,top=250');
Dialog_win.document.write(`<html><head>
<meta http-equiv=Content-Type content='text/html; charset=Shift_JIS;'>
<script>
function ok(){
alert("ok(0:");
if(window.opener){ // 親windowの確認
window.opener.document.forms.myform.submit(); // 親windowからフォーム送信
close(); // 子windowのクローズ
}else{ // 親windowがなかった時
document.body.textContent = 'ブラウザ非対応か、もしくは親windowがありません';
}
}
function can(){alert("can(0:");
close();
}</script></head>
<body>
<p>コマンドボックス</p>
<input onClick='ok();' type=button value=回転>
<input onClick='can();' type=button value=キャンセル>
</body></html>`);
}
参考:
https://developer.mozilla.org/ja/docs/Web/API/Wi …
No.1
- 回答日時:
window.openではなく、confirmを使うのはいかがでしょうか。
//--script文 ファイル名(GZ.js)---------------------------------------
function CmdBox(){//コマンドボックスを表示する
if(window.confirm('回転しますか')){
document.forms.myform.submit();
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript 付属の写真のようにエラーが出るようにしたいです。 提示したコードだけでは、エラーメッセージ文字が上の 1 2021/11/23 08:27
- AJAX jQueryを使いformでsubmitした時の位置を保持する方法について 4 2021/12/23 16:23
- JavaScript フォームの状態やGETのURLは保持しつつ、チェックボックスON/OFFした瞬間にSUBMITしたい 3 2021/10/24 01:12
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP 日付と年月日を選択するコードを書いているのですが、セレクトボックスの中に、「曜日」を表示させたいので 3 2021/12/10 09:20
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript javascriptとPHPで入力フォームのコードを書いているのですが、 流れとしては、①入力フォー 2 2021/12/02 09:18
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
formで特定のinputを送信しない...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
python3について。
-
16進の10進変換について
-
実行中の変数の中身をイミディ...
-
ACCESS テキストボックスを隙...
-
コンボボックスのtag情報の取得...
-
VBAでPDFのコピーとリネームを...
-
VB6で、長い時間かかる処理...
-
テーブル内でドロップダウンメ...
-
<SELECT>タグの折り返し
-
perlでcheckboxがうまく整理で...
-
複数のIP取得
-
構造体の各データの表示につい...
-
セレクトボックスのselected属...
-
MSXMLでの属性の存在確認法
-
selectタグ内の特定のoptionの...
-
途中まで出来ているのですが‥(D...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
formで特定のinputを送信しない...
-
子windowsからsubmit()後にclos...
-
CGIプログラムで得た結果を一行...
-
Perlで分数を保持したい
-
無駄な改行を何とかしたいです
-
ホームページビルダーのメール...
-
Perl 初心者です。
-
javascriptでCGIを実行するには
-
Win32::IE::Mechanizeで、texta...
-
javascriptでhtmlのsubmitを実...
-
Infoseek地図の住所検索をホー...
-
elsif フォーム内のカーソルを...
-
テキスト入力後、エンターを押...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
文字の横にプルダウンを表示さ...
-
実行時エラー 3020の対策
-
セレクトメニューで2つの項目...
-
16進の10進変換について
-
メモリをアドレスを直接指定し...
おすすめ情報
子windowでOK、キャンセルの選択のケースをお願いします
解決で大変ありがとうございました。