JavaScriptでフォーム内に二つのsubmitボタンがあった場合の切り分けが上手くいきません。


例:AボタンとBボタンのsubmitボタンがあった場合、Aが押された場合とBが押された場合で処理を切り分ける。
条件:onSubmitで関数を呼び出すことが前提。

下記のように書いてみたのですが、どちらともAとして処理されます。
<script type="text/javascript">
<!--
function form_check(){

if(document.form_name.a_submit.value == "A"){ // Aボタン
window.alert('Aボタン');
}
else if(document.forme_name.b_submit.value == "B"){ //Bボタン
window.alert('Bボタン');
}
}
// -->
</script>

<form action="" method="post" name="form_name" onSubmit="form_check()">
<input name="a_submit" type="submit" value="A" />
<input name="b_submit" type="submit" value="B" />
</form>

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/04/26 23:37:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:iww No.4

回答回数101ベストアンサー獲得回数10

ポイント38pt
<FORM NAME="form_name" ONSUBMIT="alert(form_name.submit.value)">
  <INPUT TYPE=HIDDEN NAME="submit">
  <INPUT TYPE=SUBMIT VALUE="A" ONCLICK="form_name.submit.value='A'">
  <INPUT TYPE=SUBMIT VALUE="B" ONCLICK="form_name.submit.value='B'">
</FORM>

その手のことをやるときは大体こういう風にしています。

あとで仕様が変わってONSUBMITでなくほんとにactionで飛ぶようになっても

だいたい意図どおりになります。

id:php-beginner

シンプルで良いですね、今回はこちらを使わせて頂きます。

勉強になりました。ありがとうございました。

2008/04/26 23:36:51

その他の回答3件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント13pt

HTMLの方で a_submit の値(value)として "A" を与えていますから、JavaScript の式 "document.form_name.a_submit.value == "A""は常に真になり、ご質問のような結果になってしまいます。

ご要望の動きをさせるには、以下のような書き方にする必要があります。

<script type="text/javascript"> 
<!-- 
function form_check(param){
    if (param == 'A') {            // Aボタン
        window.alert('Aボタン');
    } else if(param == 'B') {      //Bボタン
        window.alert('Bボタン'); 
    }
}
// -->
</script>

<form action="" method="post" name="form_name">
<input type="button" value="A" onClick="form_check('A')" />
<input type="button" value="B" onClick="form_check('B')" />
</form>
id:php-beginner

各inputにonClick="form_check()を書くことで可能な事はわかるのですがformタグ内のonSubmit="form_check()で関数を実行させる事が条件です。

2008/04/26 13:41:42
id:takaramonob No.2

回答回数77ベストアンサー獲得回数5

ポイント13pt

質問文に書かれている内容のままでできると思いますが。

else if(document.forme_name.b_submit.value == "B"){ //Bボタン

window.alert('Bボタン');

 ↓

else if(document.form_name.b_submit.value == "B"){ //Bボタン

window.alert('Bボタン');

id:php-beginner

申し訳ない、スペルミスしてましたね。

しかし、直しても結果は同じです。

2008/04/26 14:12:27
id:GoldenDawn No.3

回答回数426ベストアンサー獲得回数81

ポイント26pt

こんな感じではどうでしょうか。

javascript

var submitA = false ;
function form_check() {
  if (submitA) { // Aボタン
    window.alert('Aボタン') ;
  }
  else { //Bボタン
    window.alert('Bボタン') ;
  }
}

フォーム

<form action="" method="post" name="form_name" onSubmit="form_check()">
<input name="a_submit" type="submit" onclick="submitA=true" value="A" />
<input name="b_submit" type="submit" value="B" />
id:php-beginner

ありがとうございます!

2008/04/26 23:35:25
id:iww No.4

回答回数101ベストアンサー獲得回数10ここでベストアンサー

ポイント38pt
<FORM NAME="form_name" ONSUBMIT="alert(form_name.submit.value)">
  <INPUT TYPE=HIDDEN NAME="submit">
  <INPUT TYPE=SUBMIT VALUE="A" ONCLICK="form_name.submit.value='A'">
  <INPUT TYPE=SUBMIT VALUE="B" ONCLICK="form_name.submit.value='B'">
</FORM>

その手のことをやるときは大体こういう風にしています。

あとで仕様が変わってONSUBMITでなくほんとにactionで飛ぶようになっても

だいたい意図どおりになります。

id:php-beginner

シンプルで良いですね、今回はこちらを使わせて頂きます。

勉強になりました。ありがとうございました。

2008/04/26 23:36:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません