无法以编程方式提交表单[重复]
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 这正是我在寻找如何以编程方式提交表单时看到的。不知道为什么我没有早点意识到。以上是关于无法以编程方式提交表单[重复]的主要内容,如果未能解决你的问题,请参考以下文章