submitボタン毎にチェックするには?

[上に] [前に] [次に]
あのんきい 1999/11/11(木) 18:25:38
フォームに入力された内容を「submitボタン押下時」に
JavaScriptでチェックしています

一つのフォーム(<FORM>〜</FORM>)内に一つのsubmitボタンしかない場合は
<FORM name="xxx" onSubmit="return (check(this));">
の様に、<FORM>タグ内からチェック用の関数を呼んでいます。
この関数の戻り値がtrueだったらそのまま送信され、falseだったら
送信されません
ここまでは良かったのですが…

「一つのフォーム内に複数のsubmitボタンがある場合、
submitボタンA押下時には、チェック用の関数を呼びたいが
submitボタンB押下時には、チェック用の関数を呼びたくない
というように処理を分けたい…」
以上のような処理ができずに困っています

試した方法は
1. 一つの場合と同様に<FORM>タグ内に、onSubmit〜を記述する
 この場合A・Bどちらのボタンを押したときでも関数が呼ばれてしまう
 → 押されたボタンをJavaScriptで区別できる方法はないでしょうか?

2. submitボタンの方から関数を呼ぶ(onClickで…。onSubmitは駄目なようです)
 この場合、戻り値がfalseであっても送信されてしまう
 → 戻り値によって送信/非送信の処理を分けることはできないでしょうか?

どなたか良い方法をご存じでしたら、よろしくお願い致します(._.)

Nobu3 [E-Mail] [HomePage] 1999/11/11(木) 19:00:21
IE4,NN4(共にWin95)では、以下のような記述では大丈夫でしたけど・・・。
キャンセルするとちゃんとキャンセルされました。

<form action="hoge.cgi">
(ここには<input>がいっぱい)
<input type=submit value="no ask">
<input type=submit value="ask" onclick="return confirm('submit?')">
</form>

あのんきい 1999/11/11(木) 19:22:52
Nobu3さんありがとうございます

確かにreturn confirm('submit?')とした場合は、うまくいくのですが
confirmではなくて、自分で作成した関数を呼び
その戻り値(true/false)によって送信/非送信と処理を分けたいのです…

例えば、
<input type=submit value="ask" onclick="return check(document.MainForm)">
とした場合に送信/非送信を分けたい
ということです
(この場合、戻り値が何であれ送信されない!!)

ちなみに現在使用しているブラウザはIE5.0およびNC4.04です

Nobu3 1999/11/11(木) 19:36:24
あれ?そうですか?

function yesno(obj){
if(confirm('submit?')){
return true;
}else{
return false;
}
}

function yesno2(obj){
if(obj.elements[0].value==''){
return true;
}else{
return false;
}
}

こんなスクリプト二つで試してみましたが、結果は同じでした。何故でしょう?
IE4.01 NN4.04です。
呼出しは以下のようなものです。

<input type=submit value="no ask">
<input type=submit value="ask" onclick="return yesno2(this.form)">

Nobu3 1999/11/11(木) 20:08:40
[[解決]]
チェックをしている関数の中にバグがあるのではと思い、
よく確認したらバグがありました
(エラーではないようですが、意図しないところに";"が記述されていました)
そのバグのために、「return (true);」の処理が実行されなかったようです

Nobu3さん、どうもありがとうございました

あのんきい 1999/11/11(木) 20:09:37
済みません、前の発言の名前が「Nobu3」さんになっていますが
私の発言です

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