jQuery 允许通过以下任一方式以编程方式触发表单提交:
注:我的理解是.trigger('submit')
is to .submit()
what .on('submit',function(e){});
is to .submit(function(e){});
。简而言之.trigger('submit')
是一种比.submit()
以编程方式提交表单。
我已经知道了一些区别.on('submit',function(e){});
and .submit(function(e){});
,请参阅我的回答jQuery 中的 $(form).submit 和 $(form).on("submit") 有什么区别? https://stackoverflow.com/questions/17352251/whats-the-difference-between-form-submit-and-form-onsubmit-in-jquery/25639871#25639871,我现在想更好地理解.trigger('submit')
.
我的结论:经过一些研究,我发现使用.trigger('submit')
似乎提供了允许的“唯一”(尽管非常强大)优势传递任意数据
使用示例1:
例如,这可以用来区分“human" vs "程序化的” 表单提交。
请参阅现场演示(单击右上角的“运行/清除”)jsbin.com/jivexawixonu/1/edit?html,js,控制台,输出 http://jsbin.com/jivexawixonu/1/edit?html,js,console,output
HTML
<form class="js-form-hook-xyz">
<button>Submit form</button>
</form>
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/提交 http://api.jquery.com/submit
- api.jquery.com/trigger http://api.jquery.com/trigger
- api.jquery.com/on http://api.jquery.com/on
- www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-8/recipe-8-5 http://www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-8/recipe-8-5
是否提供任何其他附加功能.trigger('submit')
我错过了?
或者“允许传递任意数据”是使用的唯一优点.trigger('submit')
?