JavaScriptのSubmitの扱いなのですが...

[上に] [前に] [次に]
ぱよ☆ [E-Mail] 1999/05/15(土) 03:14:51
 質問ばかりで恐縮ですが、ちょっと困っています。
チャットのスクリプトを作っているのですが、メッセージを入力する
欄のフォームでIEでもNNでもエンターキーとボタンの二通りで
発言できるようにしたいのです。エンターキーでSubmitが送られると
onSubmitを利用しないとテキストボックスのクリアなどが出来ません
よね? そこで、<FORM>タグの中にonSubmit()を入れて対応させた
のですが、今度はボタンを押すと、そこで呼び出されるsubmitに
onSubmitが反応しているらしく、クリアされたてきすとボックスの
内容が送信されているようなのです。
 なにか良い対策や常套手段のようなもがありましたら、ご指導
願えないでしょうか。単純にエンターキーでの発言でもボックスを
クリアする方法が他にあるようでしたら、それでも結構です。
お願いいたします。

匿名希望 1999/05/15(土) 03:59:39
とほほさんのwwwchatのソースを参考にすればいかがでしょう?

ぱよ☆ [E-Mail] 1999/05/15(土) 10:04:08
匿名さん、ありがとうございます。
残念ながら以前にも参考にさせて頂いているんです。念のため、先ほど
確認してみたんですが、wwwchatではネスケでのエンターキーでの発言
はできないんです。onSubmit()も記述されていないようです...
根本的に無理がある考えなのでしょうか?

お時間のある時にでも、テスト用のページを見に来て下さい。
http://www.studio-critt.com/test/pchat/pchat.cgi?frame
よろしくお願いします。

ぱよ☆ [E-Mail] 1999/05/16(日) 23:49:16
上記の件なんですが、なんとかなってきました(^^;)<解決ではないの
ですが... で、submit()について、もう一つお聞きしたいのです。
<HEAD>タグの中でJava Scriptの関数を書いたとして、ボタンから
その関数を呼び出したとします。この時にsubmit()が記述されている
位置よりも下にある振舞いが無視されていまうようなブラウザーか
そのバージョンなどはあるのでしょうか? submit()を記述する場合は
最後にした方が良いのでしょうか?
質問ばかりで恐縮ですが、宜しくお願いします。

匿名希望 1999/05/17(月) 07:24:33
Netscapeはそもそも、テキストエリアが複数あると、
どう頑張ってもリターンキーで送信できないっていうのは
ご存知でした???

匿名希望 1999/05/17(月) 07:32:20
テストページを拝見いたしました。
なんか、入室できないんですけど・・(笑)
ところで上フレームのソースで、
<FORM NAME="form1" METHOD="POST" TARGET="chatframe2" ACTION="pchat.cgi?enter" onSubmit="return gochat()">

となっていますが METHOD=POST の場合って、ACTION="pchat.cgi?enter" なんていう書き方はできるんですかね?
普通はどこかに<INPUT TYPE="hidden" NAME="task" VALUE="enter">
というふうにしておかないと、CGIで送信データを受けた場合に、
?hoge1=huga1&hoge2=huga2&hoge3=huga3 という感じは送られずに、
?enter&hoge1=huga1&hoge2=huga2&hoge3=huga3
というふうになってしまいませんかね?

匿名希望 1999/05/17(月) 07:35:54
消極的な解決策ですけど、もし、名前がなしで入室されたら、
CGIでもういちど、最初と同じpchat.cgi?fst の状態を返してあげればどうでしょう?
私はそうしています。中にはJavaScript切ってる方もいますので。。

匿名希望 1999/05/17(月) 07:39:27
さらに・・・
function gochatB()の中の location.href = "pchat.cgi?top" が
document.form1.submit();の前にあるから送信できないわけですね。
これだとSubmitの前にページが変わっちゃうので、不要だと思います。

ぱよ☆ [E-Mail] 1999/05/17(月) 10:10:26
[[解決]]
 匿名さん、ありがとうございます。

>Netscapeはそもそも、テキストエリアが複数あると、
>どう頑張ってもリターンキーで送信できないっていうのは
>ご存知でした???
 はい。IEの場合はテキストエリアが複数あってもエンターで
submitが飛ぶと思ったのでonSubmitを入れてあるのですが...
無意味な事なのでしょうか。

>となっていますが METHOD=POST の場合って、
>ACTION="pchat.cgi?enter" なんていう書き方はできるん
>ですかね?
 すみません。なんの違和感もなく使ってしまいました。
私の手元にあるブラウザNC4.5では問題なく動いていたもので。
ご指導頂いた方法に訂正いたします。

>function gochatB()の中の location.href = "pchat.cgi?top" が
>document.form1.submit();の前にあるから送信できないわけですね。
>これだとSubmitの前にページが変わっちゃうので、不要だと思います。
 今回教えていただきたかった事がこれなんですが、結果的には
submit()の後に記述があっても無効であると考えてよさそうです
ね。この例も私の手元のブラウザーではちゃんと動いていたの
ですが、友人から指摘を受けたもので。
助かりました。本当にありがとうございました。

ぱよ☆ [E-Mail] 1999/05/17(月) 10:57:41
 すみません、自己レスです(^^;)
先程の解釈、思いっきり間違えていますね。

>submit()の後に記述があっても無効であると考えてよさそうです
>ね。
 逆ですよね(^^;)
データを送信する必要があり、さらに自身のページを変更する
必要がある場合は、submit()で送信してからページを切り替える
ようにしなくてはならない、という事でよろしいでしょうか。

匿名希望 1999/05/18(火) 01:16:42
追記です(笑)
>submit()で送信してからページを切り替えるように
>しなくてはならない、という事でよろしいでしょうか。
Submitのターゲットが自己フレームだと、Submitの結果が
返って来ますから、その後のlocation.href は意味がないですよね。

Aurai 1999/05/18(火) 05:00:43
NNでのエンターキーを利用したサブミットですが
フォームを二つ用意して発言欄がある方にはTEXTを一つだけにしておき
onSubmitでHIDDENにもう片方のプロパティを代入なんてどうでしょうね

Aurai 1999/05/18(火) 05:07:03
ちなみに
>となっていますが METHOD=POST の場合って、
>ACTION="pchat.cgi?enter" なんていう書き方はできるん
>ですかね?
これが出来ないのは METHOD=GET の時ですね
METHOD=POST は標準入力を使うのでオッケーです

ぱよ☆ [E-Mail] 1999/05/18(火) 11:08:43
 匿名さん、Auraiさん、ありがとうございます(^^)

>Submitのターゲットが自己フレームだと、Submitの結果が ...
今回のスクリプトではsubmitの送信先は別フレームなので大丈夫
だと思います。(うっかり間違えてしまいそうなところですね)

>NNでのエンターキーを利用したサブミットですが
>フォームを二つ用意して発言欄がある方にはTEXTを一つだけにしておき
>onSubmitでHIDDENにもう片方のプロパティを代入なんてどうでしょうね
 良いアイデアですね(^^)
別のformのプロパティをhiddenに代入してから送信すれば同じ
結果が得られますよね。なるほど。

>これが出来ないのは METHOD=GET の時ですね
>METHOD=POST は標準入力を使うのでオッケーです
 そうなんですか。POSTで送信する時は問題ないんですね。
わたしはこれまでGETを利用した事がないので、これからま勉強を
したいと思います。

 これまでに出ていた問題は、わたしの手元にあるNNでは
問題が出ないのですが、バージョンか何かで違いがあるという
事なんでしょうか。友人は匿名さんと同じように入室できないと
言っていました...(^^;) submit()の位置を変えてからは試して
もらっていませんが、問題点がここにあるのか、少々不安です。

 いずれにしても、とてもためになりました。
本当にありがとうございますm(_ _)m

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