1

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

这一直很好,没有问题,直到我找到了一个表格,它也可以做进一步的 JS 不再触发......

我提交的JS如下:

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

这很好用。然而,这是另一个在使用 HTML Button 时起作用的 JS:

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

任何帮助/建议都会很棒,因为我只是在更改 JS 中元素的名称时绕圈子。这肯定是可能的,不是吗?

4

1 回答 1

3

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

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

演示

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


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

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

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


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

于 2013-06-21T13:03:43.223 回答