无法以编程方式提交表单[重复]

Posted

技术标签:

【中文标题】无法以编程方式提交表单[重复]【英文标题】:Cannot programmatically submit form [duplicate] 【发布时间】:2014-08-13 18:06:58 【问题描述】:

尽管尝试了多种方法,但无法让我的表单以编程方式提交。试过纯JS,也试过jQuery。没有成功。

我有这个表单标签:

<form action="https://docs.google.com/forms/d/13zex8ZsEsnZz3A8uB4jU4oDb5wZfaqqq2Pq2CGlIe6M/formResponse" method="POST" id="ss-form" target="_self" onsubmit="" name="eForm">
    <!--My Form Stuff-->
    <input type="submit" name="submit" value="Submit" id="ss-submit">
</form>

这是我尝试过的:

/*jQuery*/
$('#ss-form').submit();

/*javascript*/
document.getElementById('ss-form').submit();
document.eForm.submit();

它们都不起作用。不知道为什么,但我假设这与我尝试提交谷歌表单有关。如果我实际点击提交,一切正常。

非常感谢任何和所有帮助。

【问题讨论】:

也许你有更多的JS导致问题?您看到任何错误吗? @putvande 没有控制台错误。其他一切正常。 当您尝试提交时,您的表单是否已加载到页面上? @Adjit 出于好奇,您可以使用您在控制台中提出的这些行之一吗? 这是因为您的 submit input 名称是 submit ...并且它是覆盖 form.submit() 函数的受限名称...只需将其重命名为 submiter 之类的其他名称即可工作。 【参考方案1】:

问题是您在表单中有一个名称为 submit 的字段 (htmlInputElement)。这就是为什么document.getElementById('ss-form').submit 不是函数而是对象的原因。

因此,您会收到以下错误:

TypeError: object is not a function

解决方案是删除该元素。我们应该小心验证浏览器是否认为它是一个元素而不是一个函数:

if (typeof document.getElementById('ss-form').submit === "object") 
    document.getElementById('ss-form').submit.remove();

document.getElementById('ss-form').submit();

【讨论】:

成功了!我以为我已经检查过了……因为我记得在其他地方看到过这个问题。不用说,感谢所有的帮助......花了太长时间在这个问题上摸不着头脑。 酷,也看看这个问题:***.com/q/833032/1420197 这正是我在寻找如何以编程方式提交表单时看到的。不知道为什么我没有早点意识到。

以上是关于无法以编程方式提交表单[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WebBrowser 中以编程方式提交没有提交按钮的表单

以编程方式提交 WordPress 表单密码

如何以编程方式提交Blazor表单?

如何以编程方式重复表单 POST 请求

使用 AjaxForm 时以编程方式提交表单

在提交表单时以编程方式将所有表单字段设置为 ng-touched