我有一个需要提交的表单,现在出于设计原因,我不得不重新定位提交这些表单的代码并使用 JS 实际提交它们。
这一直工作得很好,没有问题,直到我找到一个表单,该表单也可以做一些不再触发的 JS...
我的提交JS如下:
function submitform()
{
document.details.submit();
}
这很好用。然而,这是另一个在使用 HTML 按钮时起作用的 JS:
$('form').submit(function(){
$('#sortdata').val($( "#sortable" ).sortable("serialize"));
return true;
});
任何帮助/建议都会很棒,因为我只是绕着圈子改变 JS 中的元素名称。这肯定是可能的,不是吗?
最佳答案
使用 jQuery 提交方法触发 jQuery 附加的事件处理程序:
$(document.details).submit(); //shorthand for .trigger('submit')
Demo
这将以相同的方式提交表单,但也会触发 submit
事件处理程序,在此之前使用 jQuery 绑定(bind)到该元素。
问题是原生 HTMLFormElement.submit()
方法不保证触发与 jQuery 绑定(bind)的事件处理程序(或任何事件处理程序):
The form's
onsubmit
event handler (for example,onsubmit="return false;"
) will not be triggered when invoking this method from Gecko-based applications. In general, it is not guaranteed to be invoked by HTML user agents.
另一方面,jQuery 的 .submit()
/.trigger('submit')
将始终¹ 执行通过 jQuery 附加到该元素的事件处理程序。
¹ 除非先前为给定事件调用了
event.stopImmediatePropagation()
,但这是一个完全不同的主题。
关于javascript - JS 提交与 HTML 提交不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235881/