人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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>



●質問者: php-beginner
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript けが ボタン 関数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●13ポイント

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>
◎質問者からの返答

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


2 ● takaramonob
●13ポイント

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

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ボタン');

◎質問者からの返答

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

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


3 ● GoldenDawn
●26ポイント

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

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" />
◎質問者からの返答

ありがとうございます!


4 ● いわわ
●38ポイント ベストアンサー
<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で飛ぶようになっても

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ