Hatena::ブログ(Diary)

130単位

2009-04-21

1フォーム複数submitの実装

本日学んだこと。JavaScriptでフォームのaction要素を変えると、submitした後もそのままなんですね。

<form id="frm_search" action="search" method="post">
    ...
    <input type="submit" id="btn_search" name="btn_search" value="検索"/>
    <input type="button" id="btn_download" name="btn_download" value="CSVダウンロード"/>
</form>

ひとつのフォームで複数のsubmitがあるこんなhtml。で、CSVダウンロードのonclickイベントでactionを変えてsubmitするようにしたんですが、一度ダウンロードした後に検索したら再びダウンロードになってしまいました*1

というわけで、以下のように対応してみました。jQueryつかってます。

<form id="frm_search" action="" method="post">
    ...
    <input type="button" id="btn_search" name="btn_search" value="検索" />
    <input type="button" id="btn_download" name="btn_download" value="CSVダウンロード" />
</form>
$(function(){
    $("#btn_search").click(function(){
        $("#frm_search").attr('action', 'search');
        $("#frm_search").submit();
    });

    $("#btn_download").click(function(){
        $("#frm_search").attr('action', 'download');
        $("#frm_search").submit();
    });
});

どちらもJavaScriptでactionを変更するようにしたので、htmlでも両方buttonタイプにして統一感をだしてみました。

んー、もっと良いやり方がありそうな。

*1ダウンロードなので画面遷移はしないです

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/deeeki/20090421/multisubmit