1. ホーム
  2. jquery

[解決済み】jQuery:フォーム送信時にどのボタンがクリックされたかを取得する方法は?

2022-04-02 02:37:11

質問

私は .submit() イベントが設定されています。 また、ページ上に複数のフォームがありますが、この例ではここに1つだけです。 を適用せずに、どの送信ボタンがクリックされたかを知りたいと思います。 .click() イベントをそれぞれ実行します。

以下はその設定です。

<html>
<head>
  <title>jQuery research: forms</title>
  <script type='text/javascript' src='../jquery-1.5.2.min.js'></script>
  <script type='text/javascript' language='javascript'>
      $(document).ready(function(){
          $('form[name="testform"]').submit( function(event){ process_form_submission(event); } );
      });
      function process_form_submission( event ) {
          event.preventDefault();
          //var target = $(event.target);
          var me = event.currentTarget;
          var data = me.data.value;
          var which_button = '?';       // <-- this is what I want to know
          alert( 'data: ' + data + ', button: ' + which_button );
      }
  </script>
</head>
<body>
<h2>Here's my form:</h2>
<form action='nothing' method='post' name='testform'>
  <input type='hidden' name='data' value='blahdatayadda' />
  <input type='submit' name='name1' value='value1' />
  <input type='submit' name='name2' value='value2' />
</form>
</body>
</html>

jsfiddleでのライブ例

各ボタンに .click() イベントを適用する以外に、どの送信ボタンがクリックされたかを判断する方法はありますか?

どのように解決するのですか?

同じ質問をした者です。 フォームの送信イベントから、送信の原因となったボタンを取得するにはどうすればよいですか?

結局、この解決策を思いついたのですが、かなりうまくいきました。

$(document).ready(function() {
    $("form").submit(function() { 
        var val = $("input[type=submit][clicked=true]").val();
        // DO WORK
    });
    $("form input[type=submit]").click(function() {
        $("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
        $(this).attr("clicked", "true");
    });
});


複数のフォームがある場合は、少し調整する必要があるかもしれませんが、それでも適用されるはずです。