別フレームのフォーム内容を消去するには?(JavaScript)

[上に] [前に] [次に]
タナハシ [E-Mail] 1999/11/24(水) 16:03:50
はじめまして。よろしくお願いします。

たとえば、以下のようなスクリプトで、
同じページ内(フレーム内)のフォーム書き込み内容を
クリアする事ができます。
(参考にしたもの:ゆいちゃっとのCGI内にあった自動消去JavaScript)
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
  <TITLE>BBS</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function clearform()
{
self.document.send.resp.value = "";
self.document.send.pw.value = "";
self.document.send.title.value = "";
self.document.send.comment.value = "";
self.document.send.comment.focus();
}
// -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff" LINK="#660000" ALINK="#660000" VLINK="#663333">

<FORM METHOD="POST" ACTION="../cgi-bin/bbs.cgi" TARGET="fr2" NAME="send" onSubmit="setTimeout('clearform()',10)">
<P><CENTER>
〜以下略〜

これを、別のフレームから操作するようにできないでしょうか。
onLoadで、書き込みが正常に行われた事を知らせるページが
表示された時に、フォーム内容の書き込みを消去するようにしたいのです。

たとえば、
parent.fr1.document.send.resp.value = "";
のようにやってみたのですが、うまく動きません。
できれば、NN3とNN4の両方で動くようにしたいのです。
これは、可能でしょうか?

とびお [E-Mail] 1999/11/24(水) 16:58:47
こんXXは とびおです。

別フレームの関数の呼び出し方法は

parent.[フレーム名].[関数]

です。

だから、別フレームのフォームをリセットしたいなら

parent.[フレーム名].reset()

でOKだよ。

NN4.0x、IE4.01(SP1)で確認済みです。
NN3は環境がないので、とりあえず試してみてね。

健闘を祈ります。

タナハシ [E-Mail] 1999/11/24(水) 17:46:45
とびおさん、ありがとうございますm(_ _)m
でも、まだ、わからない事が…

parent.[フレーム名].reset()
これを、どのあたりに書けばいいのでしょうか…(^^;

<BODY BGCOLOR="#ffffff" LINK="#660000" ALINK="#660000" VLINK="#663333" onLoad="parent.fr1.reset()">
としてみましたが、うまく行きません。

<SCRIPT LANGUAGE="JavaScript">
<!--
function clearform()
{
parent.fr1.resp.value = "";
parent.fr1.send.pw.value = "";
parent.fr1.send.title.value = "";
parent.fr1.send.comment.value = "";
parent.fr1.send.comment.focus();
}
// --></SCRIPT>
<BODY BGCOLOR="#ffffff" LINK="#660000" ALINK="#660000" VLINK="#663333" onLoad="clearform()">

とか

<SCRIPT LANGUAGE="JavaScript">
<!--
function clearform()
{
parent.fr1.reset()
}
// --></SCRIPT>
<BODY BGCOLOR="#ffffff" LINK="#660000" ALINK="#660000" VLINK="#663333" onLoad="clearform()">

とか、試してみたんですけど…(i_i)
おそらく、何か、根本的な間違いを自分が犯しているのはわかるのですが、
それが何なのか、わからないのです。
本当に、お恥ずかしいのですが…JavaScriptは全くの初心者で…。
いろんなリファレンス本とか、自由に使って下さいというフリーのスクリプトを
切り張りする程度の事しかできないのです。

「そんな基本的なこと聞きにくるな!」と怒られてもしかたないですね。
本当にすみません。

Nobu3 1999/11/24(水) 18:02:30
parent.[フレーム名].[関数]
parent.[フレーム名].document.[フォーム名].reset();

なので、「frames.htm」に「frame1.htm」「frame2.htm」があるとき、
フレームの名前が「fr1」「fr2」だとすると、
「fr1」フレームにある「clearform」を「fr2」から呼出すなら、
parent.fr1.clearform();
同じく「fr1」フレームにある「form1」を「fr2」からリセットするなら、
parent.fr1.document.form1.reset();

です。
ページの構成がよくわからないので、一般的な書き方ですが。

タナハシ [E-Mail] 1999/11/24(水) 21:41:30
[[解決]]
できました!
テストを行った時のソースを書いておきます。

--------------------------------
test.html(フレームセット)
<HTML>
<HEAD>
  <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0J Mac">
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
  <TITLE>test</TITLE>
</HEAD>
<FRAMESET COLS="50%,50%">
<FRAME SRC="fr1.html" NAME="fr1">
<FRAME SRC="fr2.html" NAME="fr2">
<NOFRAMES>
<BODY>(後は省略)

--------------------------------
fr1.html(書き込みフォーム側)
<HTML><HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
  <TITLE>fr1</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function clearform()
{
parent.fr1.document.send.resp.value = "";
parent.fr1.document.send.guest_pw.value = "";
parent.fr1.document.send.mtitle.value = "";
parent.fr1.document.send.comments.value = "";
parent.fr1.document.send.comments.focus();
}
// -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff" LINK="#660000" ALINK="#660000" VLINK="#663333">
<CENTER>
<FORM METHOD="POST" ACTION="../cgi-bin/guestb4.cgi" TARGET="fr2" NAME="send">
<FONT SIZE=-2>RES番号</FONT>
<INPUT TYPE="text" NAME="resp" SIZE="9"> <FONT COLOR="#FF0000" SIZE=-2>削除キー
<INPUT TYPE="password" NAME="guest_pw" SIZE="10" MAXLENGTH="10"></FONT><BR>
<FONT COLOR="#FF0000" SIZE=-2>お名前</FONT><FONT SIZE=-2>
<INPUT TYPE="text" NAME="namae" SIZE="28"></FONT><BR>
<FONT COLOR="#FF0000" SIZE=-2>タイトル</FONT><INPUT TYPE="text" NAME="mtitle" SIZE="28"><BR>
<FONT COLOR="#FF0000" SIZE=-2>コメント</FONT>
<TEXTAREA NAME="comments" COLS="32" ROWS="8"></TEXTAREA><BR>
<INPUT TYPE="submit" VALUE="送信"><INPUT TYPE="reset" VALUE="修正"></FORM>
</CENTER></BODY></HTML>

--------------------------------
fr2.html(フォームを消去する側)
<HTML><HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
  <META HTTP-EQUIV="refresh" CONTENT="10;URL=logpage.html">
  <TITLE>fr2</TITLE></HEAD>
<BODY BGCOLOR="#ffffff" TEXT="#000000" LINK="#660000" ALINK="#660000" VLINK="#663333" onLoad="parent.fr1.clearform()">
書き込みは正常に投稿されました。しばらくお待ち下さい
</BODY></HTML>

--------------------------------
おそらく、
parent.fr1.document.send.resp.value = "";

parent.fr1.document.send.resp.reset();
にしてもできるのだと思いますが、
これで無事に動いたので、このままにしておきます(^^;

タコな質問に、丁寧に答えて下さって、ありがとうございました。
頑張って、ちゃんと文法などを理解できるように、努力しようと思います。

[上に] [前に] [次に]