只需点击一下即可向iframe提交多个表单

时间:2014-04-29 15:41:07

标签: javascript jquery html forms iframe

任何人都可以帮我一些代码,只需点击一下即可将我的所有表单提交给iframe吗?在我的实际代码中,我有5个以上的表单,只需按一下按钮就可以提交。我已经测试了提交一个表单并正确地提交给iframe。必须有一个简单的方法,可能是一些jQuery在循环中提交所有表单?

<form name="1398694471249" method="post" action="WuFoo.aspx" target="formresponse" id="1398694471249">
  <input type="hidden" name="Title" id="Title" value="Mr">
  <input type="hidden" name="FirstName" id="FirstName" value="Oliver">
  <input type="hidden" name="Surname" id="Surname" value="Clark">
  <input type="hidden" name="DateOfBirth" id="DateOfBirth" value="19861230">
</form>

<form name="1528632259273" method="post" action="WuFoo.aspx" target="formresponse" id="1528632259273">
  <input type="hidden" name="Title" id="Title" value="Mrs">
  <input type="hidden" name="FirstName" id="FirstName" value="Sarah">
  <input type="hidden" name="Surname" id="Surname" value="Bloggs">
  <input type="hidden" name="DateOfBirth" id="DateOfBirth" value="19750622">
</form>

<iframe name='formresponse' width='100%' height='100'></iframe>

<!-- I want to press this button and submit all forms within the iframe -->

<button type="submit">Submit both forms to iframe</button>

正如您所看到的,我有两种形式(这些是从localStorage中先前捕获的数据动态生成的),因此会有很多形式。我被告知我可以向iframe提交多个表单我只是不确定如何。非常感谢,谢谢。

2 个答案:

答案 0 :(得分:2)

你可能会做这样的事情:

$("form").each(function() {
  $(this).submit();
});

如果您不关心iframe的内容,可以制作假iframe并将其加载到那里:

$("form").each(function() {

  var $form = $(this);
  var $iframe = $("<iframe name='temporary-iframe'></iframe>");

  var oldTarget = $form.prop("target");
  $form.prop("target", "temporary-iframe");

  $("body").append($iframe);
  $form.submit();
  $iframe.remove();
  $form.prop("target", oldTarget);

});

上面的示例有一些小的性能问题。如果这对你来说运行得太慢(只有当你有 ton 表格时才会发生这种情况:

$("form").each(function() {
  var oldTarget = this.target;
  var iframe = document.createElement("iframe");
  this.target = iframe.name = "temporary-iframe";
  document.body.appendChild(iframe);
  $(this).submit();
  $(iframe).remove();
  this.target = oldTarget;
});

如果您遇到只有 last 表单提交的问题,这可能意味着表单#2在表单#1上踩踏之后才能完成,然后#3踩踏#2,然后踩#4 on #3,等等。如果您不关心iframe的内容,可以使用上面的解决方案。如果你关心iframe的内容,你需要为“我展示哪个iframe?”提出一些算法。

答案 1 :(得分:0)

除非您使用Ajax,否则您必须将每个表单发布到单个Iframe。如果您使用单个iframe,则可能会在提交二级表单之前取消提交。