如何手动触发提交功能?

How trigger on submit function manually?

我有在表单内的提交按钮上触发的提交功能。这是示例:

$(document.body).on('submit', '#myfrm', submitFrm);
    function submitFrm(e){
        e.preventDefault();
        var frmData = $(this).serialize();

        $.ajax({
            type: 'POST',
            url: 'ajax/form_data.cfm',
            data: frmData
        }).done(function(data){
            //data saved
        }).fail(function(jqXHR, textStatus, errorThrown){
            alert('Error: '+errorThrown);
        });
    }
}

现在我想从另一个函数触发 submitFrm() 函数,如下所示:

function Cancel() {
   submitFrm();
}

这将引发 e 不存在的错误。我想提交需要手动触发。有没有办法用 JQuery 做到这一点?

错误发生是因为您在调用 submitFrm 时没有传递事件 (e)。当 submit 事件发生时,事件参数由 JavaScript 传递给函数。如果您手动调用该函数,则没有事件。

您可以做的是使用 JQuery 获取对表单元素 ($('#myfrm')) 的引用并在命中时触发提交事件:

function Cancel() {
  $('#myfrm').submit();
}

以这种方式在表单上触发提交事件,并在输入事件中调用 submitFrm 处理程序。

function Cancel() {
    $('#myfrm').submit();
}

根据https://api.jquery.com/submit/