Formに複数あるSubmitボタンを識別するには

[上に] [前に] [次に]
TOKAI 1999/08/26(木) 18:41:03
こんにちは。
IE3.02でフォームに複数のSubmitボタンを配置しています。
このフォームの「OnSubmit」時に
どのボタンが押されたのか判断して、
Submitをキャンセルしたいのですが、
どのボタンがおされたかの判別方法がわかりません。

お分かりに方がいらっしゃったら
アドバイスよろしくおねがいします。

Tmb 1999/08/26(木) 18:51:53
何のために一つのフォームに複数のsubmitを置く必要があるのでしょう?
本当にそうしなければなりませんか?

複数のフォームに分割したり、本来ならbuttonを使っていいものにまで
submitを使ってませんか?
まずその部分を見直した方がいいと思いますが。

一応、方法としてはボタンのタイプをsubmitではなくbuttonにして、
onClick時にJavascriptからsubmit([そのform].submit)すればいいと
思います。

葉月 1999/08/26(木) 19:37:40
<form action="hoge.cgi">
<input type=submit name="submit1" value="登録">
<input type=submit name="submit2" value="変更">
</form>
とかして

hoge.cgiで
if ($FORM('submit1')){
    print "登録されました";
} elsif ($FORM('submit2')){
    print "変更されました";
}

などとしたら、どうでしょうか?

TOKAI 1999/08/27(金) 01:46:24
レスありがとうございます。
葉月さん、残念ながら今回はクライアント側のJavaScriptで
処理したかったので・・・・・

Tmbさん、Submitを2つ配置したのは、それぞれエラーチェックの後、
フォームのデータを同じCGIに送りたかったからです。
ただ、2つのボタンそれぞれでエラーチェックの内容が違うので、
(共通部分もたくさんあります)ひとつのFunctionで、Formの
Onsubmit時に押されたSubmitボタンがわからないかな〜と思ったからです。
その後、少し調べて、ButtonにしてOnclick時にForm.Submit()とすればよいと知りましたが、なぜかIE3.02ではエラーというか動かないので困ってます。書式がわるのかもしれないので
教えていただいたSubmit(form.submit)も試してみたいと思います。

Tmb 1999/08/27(金) 09:26:24
あ,いや,私の意図してたのもForm.submit()です。
書き方がまずくてすみませんでした。

とほほのリファレンスではIE3にも対応してるようなのですが・・・。
ただ,submit()は大文字不可なので,そこを確認して戴ければ。

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