JS提交与HTML提交不同

时间:2013-06-21 13:00:56

标签: javascript jquery html

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

这已经很好了,没有问题,直到我找到了一个表格,这个表格还有一些不再需要点火的JS ......

我提交的JS如下:

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

这很有效。然而,这是使用HTML按钮时可以工作的另一部分JS:

$('form').submit(function(){
    $('#sortdata').val($( "#sortable" ).sortable("serialize"));
    return true;
}); 

任何帮助/建议都会非常精彩,因为我只是改变了JS中元素的名称。这肯定不可能吗?

1 个答案:

答案 0 :(得分:3)

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

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

Demo

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


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

  

从基于Gecko的应用程序调用此方法时,不会触发表单的onsubmit事件处理程序(例如,onsubmit="return false;")。通常,不保证HTML用户代理可以调用​​它。

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

<小时/> ¹除非先前为特定事件调用event.stopImmediatePropagation(),否则这是一个完全不同的主题。