jQuery允许通过以下任一方式以编程方式触发表单提交:
$('.js-form-class-hook').submit();
$('.js-form-class-hook').trigger('submit');
注:我的理解是,.trigger('submit')
是.submit()
什么.on('submit',function(e){});
是.submit(function(e){});
。简而言之,这.trigger('submit')
是比.submit()
以编程方式提交表单更强大的方法。
我已经知道.on('submit',function(e){});
和之间的一些区别.submit(function(e){});
,请参阅我的答案jQuery中$(form).submit和$(form).on(“ submit”)之间有什么区别?,我现在想更好地了解的作用.trigger('submit')
。
我的结论是:经过一些研究,我发现使用.trigger('submit')
似乎提供了允许传递任意数据的“唯一”(尽管非常强大)优势。
用法示例1:
例如,这可以用于区分“ 人 ”对“ 程序化 ”表单提交。
在jsbin.com/jivexawixonu/1/edit?html,js,console,output上查看实时演示(单击右上角的Run / Clear)。
的HTML
jQuery的
var pleaseConfirmSubmission = function( formElem ){ // ... some conditions checks // if condition met, submit with a flag formElem.trigger( "submit" , ['isProgrammaticalSubmission'] ); } $("body").on("submit", ".js-form-hook-xyz", function(event, isProgrammaticalSubmission) { console.log("on form submission: " + ( isProgrammaticalSubmission || "isHumanAction !" ) ); if ( !isProgrammaticalSubmission ){ /* JS truthy/falsy value usage */ event.preventDefault(); /* cancel form submission */ pleaseConfirmSubmission( $(this) ); } });
资源:
api.jquery.com/submit
api.jquery.com/trigger
api.jquery.com/on
www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-8/recipe-8-5
.trigger('submit')
我错过了其他功能吗?
还是“允许传递任意数据”是使用的唯一优势.trigger('submit')
?