javascript - JS 提交与 HTML 提交不一样

标签 javascript jquery html

我有一个需要提交的表单,现在出于设计原因,我不得不重新定位提交这些表单的代码并使用 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/

相关文章:

javascript - XHR 不再适用于 jQuery $.ajax

javascript - 可调整大小时,最大化/取消最大化对 Electron 不起作用 : false

javascript - 用于编辑源中链接的 Tampermonkey 脚本

javascript - JS 数组未正确访问

javascript - 来自不同内容脚本和主要内容的 Firefox SDK 信息

jquery - Ajax 调用同步与异步?

javascript - 使用 jquery 将 JSON 解析为 HTML

javascript - JQuery - 多个复选框操作

javascript - 在加载应用程序根目录之前,Index.html 样式不会激活

javascript - jQuery - 选择具有数组名称的所有输入