Top >
JavaScript > 複数のsubmitボタンをonsubmitで判定する方法
複数のsubmitボタンをonsubmitで判定する方法
複数のsubmitボタンをonsubmitで判定する方法を紹介します。
1.問題点
下記のように、複数のsubmitボタンが実装されたフォームがあります。
<form name="test" method="post" action="./test.cgi">
:
<input name="a" type="submit" value="aaa" />
<input name="b" type="submit" value="bbb" />
<input name="c" type="submit" value="ccc" />
</form>
フォーム送信時にonsubmit属性などを使って、どのsubmitボタンが押されたかを判定したいのですが、方法がわかりません。
ということで、複数のsubmitボタンをonsubmitで判定する方法を紹介します。
2.複数のsubmitボタンをonsubmitで判定する
複数のsubmitボタンをonsubmitで判定するには、フォームにtype="hidden"のinput要素を追加し、各ボタンにonclick属性を追加します。onclick属性ではtype="hidden"のinput要素に、ボタン毎に異なる値を設定します。
<form name="test" method="post" action="./test.cgi" onsubmit="return check_data()">
:
<input name="a" type="submit" value="aaa" onclick="test.key.value='aaa'" />
<input name="b" type="submit" value="bbb" onclick="test.key.value='bbb'" />
<input name="c" type="submit" value="ccc" onclick="test.key.value='ccc'" />
<input name="key" type="hidden" value="" />
</form>
そしてonsubmit属性で起動する関数で、type="hidden"のinput要素の値を判定すればOKです。
<script>
function check_data() {
if (test.key.value == 'aaa') {
:
}
return true;
}
</script>
3.複数のsubmitボタンをonsubmitで判定する(jQuery)
2項のコードをjQueryで書くこともできます。jQueryであればフォームに手を加えず、エレガントに書けます。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<form name="test" method="post" action="./test.cgi">
:
<input name="a" type="submit" value="aaa" />
<input name="b" type="submit" value="bbb" />
<input name="c" type="submit" value="ccc" />
</form>
<script>
$(function(){
// フォームにtype="hidden"のinput要素を追加
$('form').append('<input name="key" type="hidden" value="" />');
// ボタンクリック時、type="hidden"のinput要素に自分の値を設定
$('input').click(function(){
$('input[name=key]').val($(this).val());
});
// submit時、type="hidden"のinput要素の値を判定
$('form').submit(function(){
if($('input[name=key]').val() == 'aaa'){
:
}
});
});
</script>
Posted by yujiro このページの先頭に戻る
- JavaScriptの時間を0パディングする方法
- JavaScriptでJSONデータを作る方法
- JavaScriptやjQueryで設定されたイベントの定義場所を調べる方法
- javascript:void(0)のまとめ
- setTimeout()やsetInterval()で引数を渡す方法
- JavaScriptのFormDataの使い方
- JavaScriptメールアドレスチェッカー
- PCのブラウザでiPhoneやAndroidのようなパスワードフォームを実現するJavaScriptライブラリ「FormTools」
- JavaScriptでフォーカスのあたっている要素を取得する「document.activeElement」
- 入力フォームの全角・半角を勝手に変換してくれるJavaScript
- JavaScriptエラーを表示・確認する方法のまとめ
- ソーシャルボタンのJavaScriptでfunctionの前に「!」がついている理由
- JavaScriptでCSSの擬似クラスを設定する方法
- JavaScriptの正規表現で文字列を抜き出す「グループ化」
- JavaScriptにおける引数や配列の要素数の制限について
トラックバックURL
コメントする
greeting