ダイアログでFORMのsubmit()

このQ&Aのポイント
  • ダイアログ上でFORMのsubmit()を実行する方法について
  • モーダルダイアログ上にサーブレットの実行結果を表示する方法についての質問
  • ダイアログ内でのFORMのsubmit()に関する問題について
回答を見る
  • ベストアンサー

ダイアログでFORMのsubmit()

以下のようなhtmlを作成しました。 (1)external_link.html(メイン側) <html> <head> <script> <!-- function setForm(elem){ var childwin; formid = document.forma; document.form1.login.value = formid.login.value; window.showModalDialog("dialog.html", this, "status:yes; resizable:yes;" ); } // --> </script> </head> <body> <form name="forma"> <input type="hidden" name="login" value="login1"> <input type="button" name="login1" value="ダイアログいけ" onClick="setForm(this);"> </form> <form name="form1"> <input type="hidden" name="login" value=""> </form> </body> </html> (2)dialog.html <html> <head> <script> <!-- function setForm(){ var parentwin = window.dialogArguments; var parentForm = parentwin.document.form1; document.formx.login.value = parentForm.login.value; document.formx.submit(); } // --> </script> </head> <body onLoad="setForm();"> <form action="http://host-name/servlet" method="POST" enctype="application/x-www-form-urlencoded" name="formx"> <input type="hidden" name="login" value=""> </form> </body> </html> 期待としては、このモーダルダイアログ上にサーブレットの実行結果が表示されることなのですが、何も実行されません。 でも、setForm()ファンクション上にalert("A");等をつけてやると ダイアログではなく『別画面上に』サーブレット実行結果が表示されます。 モーダルダイアログ上にサーブレットの実行結果を表示する方法はありませんでしょうか。 よろしくご教示お願いします。

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

  • ベストアンサー
  • qtea
  • ベストアンサー率77% (38/49)
回答No.1

確か、showModalDialogで開いたWindowでは、簡単には、ページ遷移ができなかったように記憶しています。 解決方法は、以下を参考にしてみてください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2269266 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=28&topic=22195

PED02744
質問者

お礼

ご指摘のURLを参考に、ダイアログにIDをつけたりしてみたのですが、 挙動が安定しないので、FRAMEで対応することとしました。 ありがとうございました。

関連するQ&A

  • フォームのvalueを変更する方法

    下記はjavaScriptで書いたものですが、javaScriptが有効になっていないと機能しないので perlで同じことをやりたいのですが、フォームのvalueを変更する方法とinnerHTMLの様なボタンをクリックするとテキストを変更する方法が分かりません。 ヒントでも良いので教えていただけませんか? <HTML> <HEAD><SCRIPT language="JavaScript"> <!-- function nextA(){ var data = document.formA.data.value; data++; document.formA.data.value = data; } //--> function nextB(){ var data = document.formB.data.value; data++; document.formB.data.value = data; document.getElementById("print").innerHTML = data; } //--> </SCRIPT> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY> <FORM name="formA"> <input name="data" value="1"> <INPUT type="button" value="足す" onclick="nextA()"> </FORM> <FORM name="formB"> <SPAN id="print">1</SPAN> <INPUT type="button" value="足す" onclick="nextB()"> <INPUT type="hidden" name="data" value="1" > </FORM> </BODY> </HTML>

    • ベストアンサー
    • CGI
  • javascriptで取得した値を、FORMで送信する

    いつもお世話になっております。 jspからwindow.openを使い、別ウインドウを表示しました。 別ウインドウでの質問です。 javascriptで前のページ(jsp)の情報を受け取り、それを次のページ(jsp)へFORM(POST)で送りたいのですが、うまくいきません。 ご教授下さい。 <HTML> <HEAD> <script type="text/javascript"> <!-- function sent() { var num = window.opener.document.aaa.number01.value; ここで前ウィンドウの情報を取得しています return num; } function sub() { document.bbb.submit(); } // --> </script> </HEAD> <BODY onload="sub()"> <form name="bbb" METHOD="POST" action="http://okwave.jp"> <input type="hidden" name="timeid" value=""> <input type="hidden" name="number00" value="1"> <input type="hidden" name="number01" value="sent()"> <!--<input type="hidden" name="number01" value="204038054776">--> 当たり前ですが、コメントにしている部分にすると次のページでうまくいきます。 </form> </BODY> </HTML>

  • formの中で別のactionをもったsubmitボタンの設置。

    formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 確認画面A function func1(form){ document.form1.check[].value =form.check[].value; document.form1.submit(); } //*** 確認画面B function func2(form){ document.form2.check[].value =form.check[].value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <input type="check" name="test[]" value="0">0 <input type="check" name="test[]" value="1">1 <input type="check" name="test[]" value="2">2 <input type="button" onClick="func2(this.form)" value="確認B"> <input type="button" onClick="func1(this.form)" value="確認A"> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="check[]"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="check[]"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 チェックボックスで何と何がチェックされたかを渡したいのですが、エラーが発生します。 おそらくjavascript内の構文でcheck[]と記述してるからだと思いますが、 どのようにすれば受け渡すことができるのでしょうか。 checkのみにすると1つの値しか渡せません。

    • ベストアンサー
    • HTML
  • formの中で別のactionをもったsubmitボタンの設置。

    formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 送信画面 function func1(form){ document.form1.text.value =form.text.value; document.form1.file.value =form.file.value; document.form1.dummy.value =form.dummy.value; document.form1.submit(); } //*** ユーザー追加画面 function func2(form){ document.form2.text.value =form.text.value; document.form2.file.value =form.file.value; document.form2.dummy.value =form.dummy.value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <table id="table" width="100%"> <tr><th width="10%">テキスト</th><td><input type="text" name="text"> <br /> <div style="text-align:left;"> <input type="button" onClick="func2(this.form)" value="テキスト確認"> </div> </td></tr> <tr><th width="10%">添付</th><td><input type="file" name="file"></td></tr> </table> <div style="text-align:left;"> <input type="button" onClick="func1(this.form)" value="確認"> </div> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 textの内容は渡せるのですが、添付したいファイルを渡すことができません。 添付ファイルも渡せるようにするにはどうすればよいのでしょうか

    • ベストアンサー
    • HTML
  • form につけた id 値の取得方法

    form 内に id という名前の input 要素があると、form につけた id 値が取得できません。firefox で確認しましたが、例の f2.id が input 要素になります。このような場合 form の id 値はどのようにすれば取得できるでしょうか。 <!doctype html> <html> <head><title>id test</title></head> <body> <form id="f1" name="f1"> <input type="hidden" name="idx"> </form> <form id="f2" name="f2"> <input type="hidden" name="id"> </form> <script type="text/javascript"> var f1 = document.getElementById('f1'); var f2 = document.getElementById('f2'); alert("f1.name: " + f1.name + ", f1.id: " + f1.id + "\nf2.name: " + f2.name + ", f2.id: " + f2.id); </script> </body> </html>

  • javascriptで困っています。教えてください

    JavaScriptで配列をPOST送信しようとしています。 <form>や<input>を作っておいてではなく、javascriptで生成する関数からしたいと思っています。以下のコードでうまくいきません。 教えていただければありがたいです。よろしくお願いします。 <!DOCTYPE html> <html> <head> <script type="text/javascript"> var ar = new Array(5); ar[0] = 111; ar[1] = 222; ar[2] = 333; ar[3] = 444; ar[4] = 555; function sampleForm(value){ var form = document.createElement('form'); document.body.appendChild( form ); var input = document.createElement('input'); input.setAttribute('type','hidden'); input.setAttribute('name','hidden_input'); input.setAttribute('value', value); form.appendChild(input); form.setAttribute('action','send.php'); form.setAttribute('method','post'); form.submit(); } </script> </head> <body> <a href=“javascript:sampleForm(ar)”>クリックしたら“samplepost”をPOST送信</a> </body> </html> send.php-------------------------------- <?php $num = isset($_POST['hidden_input']) ? $_POST['hidden_input'] : null; print "num: " . $num; ?>

  • ダイアログ(commonDialog)について

    ダイアログを開いてファイルを選択するプログラムを作るように頼まれましたが、困ってます。 ちなみにこのファイルはASPのものです。 <SCRIPT LANGUAGE=JAVASCRIPT FOR=CommonDialog1> FUNCTION CDLPROPGET(){ DOCUMENT.FORMS[0].FLNM.VALUE=DOCUMENT.COMMONDIALOG1.FILENAME; DOCUMENT.FORMS[0].SUBMIT(); } </SCRIPT> </HEAD> <OBJECT ID="COMMONDIALOG1" CODEBASE=HTTP://ACTIVEX.MICROSOFT.COM/CONTROLS/VB6/COMDLG32.CAB#VERSION=6,0,81,69 CLASSID=CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB WIDTH=32 HEIGHT=32> <PARAM NAME="DIALOGTITLE" VALUE="ファイルを選択してください"> <PARAM NAME="INITDIR" VALUE="C:\MY DOCUMENTS"> <PARAM NAME="FILTER" VALUE="EXCELファイル|*.xls"> <PARAM NAME="FilterIndex" VALUE="1"> </OBJECT> <form action="UdbNyuryoku2.asp" target="main" method="POST"> <input type="hidden" name="FlNm" value=""> <input onclick=CommonDialog1.ShowOpen();cdlPropGet() type=button value="開く" style="width=100"></input> </form> </body> このコードは98では問題なかったのですが、2000上で実行すると、ダイアログが開きませんでした。原因がわからず困っています。よろしくお願いいたします。

  • formのボタンをsubmitしたときにアラート

    javascript で、formのボタンをsubmitしたときに アラートが出るようにしたいと思います。 下記のように作ってみましたが、うまく動きません。 どのようにすれば動くでしょうか? ご教示いただきたくお願いいたします。 <script type="text/javascript"> function(){ $('form1').submit(function(){ $.ajax({ type: 'POST', data: postData, url: 'buy.php', success: function(data){alert("購入できました");} error: function(){alert('購入できませんでした。再度お試しください');} }); return false; }); } </script> <form name="form1" id="form1" method="POST" name="form1" value="form1" action="buy.php"> <input type="hidden" name="id" value="100" /> <input type="hidden" name="name" value="高橋" /> <input type="submit" value="Save"> <form/>

  • モーダルダイアログでオートコンプリート機能

    下記ファイル1、ファイル2のHTMLファイルは単独の起動ではオートコンプリート機能が使えるんですが、(<form>タグにautocomplete="on"を記述)ファイル1からJavaScriptでモーダルダイアログ(ファイル2)を呼び出してその中でオートコンプリート機能を使おうとすると使用できなくなってしまいます。何かよい方法はありますでしょうか? どなたかわかる方いらっしゃいましたら教えてもらえませんか? WindowsXP PRO SP2 IE6 よろしくお願いいたします。 ●ファイル1(モーダルダイアログ呼出元ファイル) <html> <head> <title>ファイル1</title> <script type="text/javascript"> <!-- function func() { var args; showModalDialog("test-2.html", args, "dialogHeight:300px;dialogWidth:300px"); } // --> </script> </head> <body> オートコンプリートテスト <form name="f1" autocomplete="on"> <input type="text" name="t1"> <input type="button" value="モーダル表示" onclick="func()"> </form> </body> </html> ●ファイル2(モーダルダイアログ表示ファイル) <html> <head> <title>ファイル2</title> </head> <body> オートコンプリートテスト(モーダル) <form name="f1" autocomplete="on"> <input type="text" name="t1" value=""> <input type="button" value="セット"> </form> </body> </html>

  • 名無しformの操作

    以下のような、元々名前のないformが複数ある場合にボタンイベントで発生した共通のtest()関数内で処理を行う場合、どのフォームか識別できる方法はあるのでしょうか? テスト1、をクリックした場合、テスト1のフォームの操作を行いたいです。 <script ....... function test(???) { document.どのフォームかわからない.action="/index.cgi"; document.どのフォームかわからない.a.value="1"; document.どのフォームかわからない.submit(); } </script> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト1" onclick="javascript:test(???)"> </form> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト2" onclick="javascript:test(???)"> </form> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト3" onclick="javascript:test(???)"> </form>

専門家に質問してみよう