如果输入名称是“提交”,如何使用Javascript发送表单?

时间:2012-01-04 15:27:25

标签: javascript html form-submit

问题:如果一个表单输入的名称为submit,如何使用Javascript发送表单?

后台:我正在将用户重定向到另一个隐藏HTML表单的页面。我无法更改(隐藏)输入上的名称,因为另一个页面位于另一台服务器上,输入需要完全按原样。我的HTML表单如下所示:

<form id="redirectForm" method="post" action="http://www.example.com/">
  <input name="search" type="hidden" value="search for this" />
  <input name="submit" type="hidden" value="search now" />
</form>

我今天使用以下javascript行自动发送表单:

document.getElementById('redirectForm').submit();

但是,由于一个输入的名称是“submit”(它不能是其他内容,或者其他服务器不会处理请求),document.getElementById('redirectForm').submit会引用输入,因为它会覆盖表单函数{ {1}}。

Firefox中的错误消息是:submit()。 Safari中的类似错误消息。

2 个答案:

答案 0 :(得分:17)

值得注意 :将输入名称更改为“提交”以外的其他内容通常要容易得多。只有在真的无法实现的情况下才能使用下面的解决方案。

您需要从另一种形式获取submit函数:

document.createElement('form').submit.call(document.getElementById('redirectForm'));

如果您已有另一个<form>标记,则可以使用它而不是创建另一个标记。

答案 1 :(得分:7)

使用HTMLFormElement.prototype中的submit()方法:

HTMLFormElement.prototype.submit.call(document.getElementById('redirectForm'));