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?
In javascript onclick event , you can use form. submit() method to submit form. You can perform submit action by, submit button, by clicking on hyperlink, button and image tag etc. You can also perform javascript form submission by form attributes like id, name, class, tag name as well.
In both the cases, pressing the button will submit the parent form without the need for handling the onclick event separately. If you want to validate the form before submitting, the best event handler would be the onsubmit event of the form.
$('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;
});
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);
}();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With