提交后更改表单的目标

时间:2011-04-24 20:57:56

标签: javascript iframe attributes target

我一直在努力工作并取得零进展我即将惊慌失措。请帮忙!

以下是代码。

我希望表单的TARGET属性从target="frame1"更改为target="frame2"然后target="frame3",依此类推,在提交表单后无限制。表单将这些提交到iframe,因此每次提交后页面都不会刷新。

有人可以帮忙吗?

<div id="container">
<div id="scan">
  <form method="post" id="auditRepairForm" name="auditRepairForm" action="https://example.com.com" target="changeTarget()">
    <input name="scanID" id="scanID" value="12345678" onFocus="this.value=''" />
    <input name="fromLaunchScreen" id="fromLaunchScreen" type="hidden"/>
    <input type="submit" id="SubmitForEdit" style="display:none;"/>
  </form>
</div>

<div class="outerdiv">
<iframe name="frame1" class="inneriframe"></iframe>
</div>

<div class="outerdiv">
<iframe name="frame2" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame3" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame4" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame5" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame6" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame7" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame8" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame9" class="inneriframe"></iframe>
</div>
<div class="outerdiv">
<iframe name="frame10" class="inneriframe"></iframe>
</div>

</div>

3 个答案:

答案 0 :(得分:2)

如何改变

<input type="submit" id="SubmitForEdit" style="display:none;"/>

为:

<input type="button" id="SubmitForEdit" onclick="changeformtarget();" style="display:none;"/>

并添加

<script type="text/javascript">
var count = 1;
function changeformtarget() {
     document.getElementById('auditRepairForm').target = 'frame'+count;
     count += 1;
}
</script>

答案 1 :(得分:0)

如果您使用的是IFRAME而非AJAX,则需要在iframe中提交的页面中添加一个小的javascript代码。
该代码应该直接在父窗口中更改表单的属性,或者在父窗口中激活该功能。

答案 2 :(得分:0)

我认为您需要使用setTimeout,因为否则无法突破提交事件:

<script type="text/javacript">
var count = 2;
function submit() {
    setTimeout(function () {
         // this will get executed AFTER the form submits
         document.getElementById("the_form").target = "frame" + count;
         count += 1; // increase the counter so next time is frame3;
    }, 1);
    return true;
}
</script>
<form id="the_form" onsubmit="return submit();" target="frame1">
..etc..
</form>