WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScript、onsubmit()イベント。

0:[投稿] chirumiru [MAIL] [URL] [2004/01/16 12:30 ][環境:IE6、Win98 UNIX]

こん○○わ。>ALL様。
chirumiruです。

いまPerlを使い、チャットをつくっています、
そのスクリプトの中にある、JavaScriptについて質問させてもらいます。

質問の内容は、コメントの自動消去です。

まず、次のようにフレーム分割をしています、

sub frame_ {
    print "Content-type: text/html\n\n";
print <<"_HTML_";
    <html>
    <head>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
    <title>$title</title>
    </head>
    <frameset rows="45%, *" frameborder="0" framespacing="0">
        <frame src=$cgiurl?myaction=in name="table">
        <frame src=$cgiurl?myaction=dis name="view">
        <noframes>
            <body bgcolor=$bg_color>
            </body>
        </noframes>
    </frameset>
    </html>
_HTML_
    exit;
}

そして、tableフレームに投稿フォームをおいています。

sub form_ {
    &get_;
    &head_;
    |
    print <<"_HTML_";
    <form action=$cgiurl method=$cgimethod name="comment" target="view" onsubmit="return comclear()">
        <table width="65%" align="center" cellpadding="1" cellspacing="0">
    |
            <td colspan="10" width="50%" align="left"   valign="middle"><input type="text" size="70" name="mycomment"></td>
    |
}

そして、head_()関数の中に、JavaScriptでcomclear()関数を定義しています。

sub head_ {
    |
    <script type="javascript" language="JavaScript">
    function comclear() {
        if (parent.table.document.comment.mycomment) {
            parent.table.document.comment.mycomment.value="";
            parent.table.document.comment.mycomment.focus();
        }
    }
    </script>
    |
}

以上のようにしているのですが、
コメント欄がクリアされません。

どこにもんだいがあるのでしょうか?
ご教示を願います。
(onsubmit="return comclear()"、returnを用いるのは、こちらのページの講座を参考にしたんですが…)

P.S. 前回質問させていただいた、スタイルシート、いま、DOMとやらの中にでてきました。
解決したら連絡します。

でわ。


1:[回答] はま [2004/01/16 14:40 ]

質問を読む気にもならんな。
何を聞きたいかだけを書けば。


2:[回答] やちまた [2004/01/16 14:46 ]

問題の解決に繋がるかどうかは分かりませんが、

「table」 のような、いわゆる「意味の有る予約語」を 、
id , name のような部分に用いるのは好ましくないと思います。


3:[関連] chirumiru [MAIL] [URL] [2004/01/16 15:09 ]

やちまたさん、
ありがとうございます、(はじめまして)

とりあえず、名前をかえてみたんですが…。

あと、
ひとつおつきあい願いたいのですが。

構文は間違っていないでしょうか?

よろしければ、
ご教示願えるでしょうか?

でわ。


4:[回答] ミツ [2004/01/16 15:18 ]

全角の「|」は文字化けしてるのかな?スクリプトのソースとして何だかわからなくなってるので判断つきません。

やちまたさんの云うとおり、意味のあるワードは思わぬ動作をしていたりエラーになったりするので避けるべきです。

また、javascriptを書いているフレーム自身に対する操作なら parent.table. は不要、(あえて付けるならself)です。

別件ですが
onsubmit="return comclear()"
では、comclear()実行後、送信になります。
comclear()がキチンと動作するようになると、コメントが空で送信されるようになると思います。
#このあたりをどうするべきかは、既存のチャットのスクリプトを参考にするといいかと思います。


5:[回答] やちまた [2004/01/16 15:47 ]

>構文は間違っていないでしょうか?

構文的なエラーは動作させてみれば直ぐに分かる筈です。
必ず、スクリプトエラーとなり、ダイアログが表示されるか、
若しくはステータスバーに黄色い三角マークが出ます。


想定したタイミングで想定した関数が本当に呼ばれているか?
IF文は想定通りに通過しているか?
オブジェクトの参照は成功しているか?

その辺りをしっかりと確認するべきだと思います。


6:[関連] chirumiru [MAIL] [URL] [2004/01/16 17:28 ]

ミツさん、
ありがとうございます、(はじめまして)

やちまたさん、
再度ありがとうございます。

こちらのケアレスミスでした、
type属性の記述間違いでした。

やちまたさんにご指摘いただいた、ステータスバーの参照で、とりあえず関数が呼ばれていることがわかり、解決のきっかけになりました。

ミツさん、
“return”のご教示ありがとうございました、
さて宿題(?)ですが、ひらめいて、hidden属性を使い、クリアする前にそちらに値を待避さすことでのりきりましたが、はっきりいってダサいですか?自分なりにそう想うのですが…。

いずれにせよ、フリーソースをおろして、勉強します。

またのおりにはよろしく願います。

でわ。


7:[完了] chirumiru [MAIL] [URL] [2004/01/17 04:01 ]

完了します。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World