JS提交和HTML提交不一样

JS Submit not the same as HTML Submit

本文关键字:提交 不一样 HTML JS      更新时间:2023-09-26

我有一个表单需要提交,现在由于设计原因,我不得不重新定位这些表单的提交代码,并使用JS来实际提交它们。

这一直工作得很好,没有问题,直到我发现一个表单,也做了JS的进一步片段,不再触发…

我提交的JS如下:

function submitform()
{
    document.details.submit();
}   

这个效果很好。然而,当使用HTML按钮

时,这是JS的另一段工作:
$('form').submit(function(){
    $('#sortdata').val($( "#sortable" ).sortable("serialize"));
    return true;
}); 

任何帮助/建议都是辉煌的,因为我只是在改变JS中元素的名称。这肯定是可能的,不是吗?

使用jQuery submit方法触发事件处理程序:

$(document.details).submit(); //shorthand for .trigger('submit')

演示

这将以相同的方式提交表单,但在此之前还会触发绑定到该元素的submit事件处理程序。


问题是原生HTMLFormElement.submit()方法不保证触发与jQuery绑定的事件处理程序(或任何事件处理程序):

当从基于gecko的应用程序调用此方法时,窗体的onsubmit事件处理程序(例如,onsubmit="return false;")将不会被触发。一般来说,它不能保证被HTML用户代理调用。

另一方面,jQuery的.submit()/.trigger('submit')将始终执行通过jQuery附加到该元素的事件处理程序。

  • jQuery .trigger()参考


¹如果event.stopImmediatePropagation()之前被调用给定的事件,但这是一个完全不同的主题。