Formで送信が成功したらフォーム内容を消すには?

[上に] [前に] [次に]
BASIC [E-Mail] [HomePage] 1998/06/21(日) 15:58:21
ぼくのホームページではちょっとしたチャットをやっているのですが、
フォームで入力した内容を受理したらそのフォームを
クリアするってできないのでしょうか?
構造上、フォームのあるページをリロードしたり、切り替えたりできないのです。
Javaも試みてみましたが、"onSubmit"で呼ぶ関数内で
初期化すると、投稿する前にフォームが空になってしまいます(^^;

mura [E-Mail] 1998/06/21(日) 22:35:46
クリアするのはチャットの発言内容だけでしょうか?以下そのつもりで書いています。

隠し変数を1つ用意するというのはいかがでしょう?
onSubmitの時に隠し変数へ発言内容を移し、その後入力領域をクリアします。

isaidという隠し変数を用意して、画面に表示される領域はisaid_textという名前にして
サンプルを書いてみます。
(発言を処理するCGI側ではisaid_textを使わず、isaidを参照します)
動作は試してないので間違いがあったらすみません。

<SCRIPT LANGUAGE=JavaScript>
<!--
function isaid_move() {
document.forms[0].isaid.value = document.forms[0].isaid_text.value;
document.forms[0].isaid_text.value = "";
return true;
}
// -->
</SCRIPT>

<FORM ACTION=... TARGET=... METHOD=post onSubmit="return isaid_move();">
<INPUT TYPE=hidden NAME=isaid>
<INPUT TYPE=text NAME="isaid_text" SIZE=50>
<INPUT TYPE=submit NAME=" OK ">
</FORM>

mura 1998/06/21(日) 22:47:28
>(発言を処理するCGI側ではisaid_textを使わず、isaidを参照します)

補足です。
JavaScriptをOFFにしている人のために、isaid_textの方も見る必要がありますね。
ってことは(そういう人たちも参加させるなら)CGIを書き換える必要が生じてきます。

BASIC [E-Mail] [HomePage] 1998/06/22(月) 00:05:34
[[解決]]
ご回答ありがとうございます!

そうかぁ、ダミーのフォームを作ればいいのか!
しかもこの方法だと、二重書き込みもチェック出来る!
if(document.forms[0].isaid.value == document.forms[0].isaid_text.value){
alert("二重書き込みです!");
}
ってなぐあいに(^_^) 荒らし対策に有効ですね

>JavaScriptをOFFにしている人のために、isaid_textの方も見る必要がありますね。

対応していないユーザには申し訳ないけどフレームと
Javaに対応していないブラウザはチャットルームに入る
以前にチェックしてはねちゃいます(^^;
と、いうのも、僕のチャットではJavaで禁止タグのチェック
をしているので。

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