How to get clicked submit button when submitting a form via JQuery

15,924

Solution 1

$('input[type="submit"]').on('click', function(){
      $('.myForm').data('button', this.name);
});

$(".myForm").on('submit', function(){
  var submitButton = $(this).data('button') || $('input[type="submit"]').get(0).name;
});

Solution 2

There is now a standard submitter property in the submit event.
Already implemented in firefox!

document.addEventListener('submit',function(e){
    console.log(e.submitter)
})

in jQuery you just write

$(".myForm").on('submit', function(e){
  e.originalEvent.submitter
});

for browsers not supporting it use this polyfill:

!function(){
    var lastBtn = null
    document.addEventListener('click',function(e){
        if (!e.target.closest) return;
        lastBtn = e.target.closest('button, input[type=submit]');
    }, true);
    document.addEventListener('submit',function(e){
        if (e.submitter) return;
        var canditates = [document.activeElement, lastBtn];
        for (var i=0; i < canditates.length; i++) {
            var candidate = canditates[i];
            if (!candidate) continue;
            if (!candidate.form) continue;
            if (!candidate.matches('button, input[type=button], input[type=image]')) continue;
            e.submitter = candidate;
            return;
        }
        e.submitter = e.target.querySelector('button, input[type=button], input[type=image]')
    }, true);
}();

Solution 3

Try this:

$(".myForm").submit(function(){
      var submitButton = $(":focus", this);
});
Share:
15,924
Ali Bassam
Author by

Ali Bassam

Peaceful Lebanese Citizen, Loves Computers and Technology, Programming and the Web. You can follow me here alibassam.com here twitter.com/alibassam_ and here.. on StackOverflow!

Updated on June 09, 2022

Comments

  • Ali Bassam
    Ali Bassam almost 2 years

    I have a form with 2 submit buttons.

    <form class="myForm">
         <!-- Some Inputs Here -->
         <input type="submit" name="firstSubmit" value="first submit" />
         <input type="submit" name="secondSubmit" value="second submit" />
    </form>
    

    I am submitting this form via JQuery.

    $(".myForm").submit(function(){
          var submitButton = ? //I need to catch the submit button that was clicked
    });
    

    How can I know which submit button was clicked?