Вообще это не очень круто, что сторонний скрипт позволяет себе такие вольности типа непосредственного вызова
submit, или может он какой специфичный. Такой подход не оставляет другого выбора, кроме декорирования:
(() => {
var old_submit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = function() {
var form = this,
args = Array.prototype.slice.call(arguments),
submit_event = new Event('submit', {
bubbles: true,
cancelable: true
});
submit_event.original_submit = function() {
old_submit.apply(form, args);
};
form.dispatchEvent(submit_event);
}
})();
$(() => {
var my_form = $( 'form' )[0];
$( document )
.on('submit', 'form', function(e) {
alert('wtf?');
e.originalEvent.original_submit();
})
.on('click', 'button', function() {
my_form.submit();
});
})
Суть в том, чтобы при вызове сабмита выкидывать (bubbling) объект ивента в котором и лежит ссылка на оригинальный сабмит, который является единственным способом послать форму. Это ужас, кошмар и ад, и я бы так никогда не стал делать, но чо-то ничего лучше не придумал.