我在一个页面上有2帧,其中frame1调用frame2上的Javascript方法。在第2帧中,我们做了一个不会发生的提交。当我们返回到frame1时,它会自己提交并且工作正常。两个提交都将POST数据发送到服务器。
function doSubmit(selectedTab)
{
if (checkFieldsChanged() == true)
{
...
if(selectedTab >= 0)
document.forms[0].action="WebDesk?op=dm&id=11097DETH000000&FormNo=" + selectedTab;
document.forms[0].submit();
}
}
function checkFieldsChanged()
{
...
if (confirm("Do you want to save the changes you have made?"))
{
// try to submit the form.
try
{
return parent.frames[1].doSubmit();
}
catch (e)
{
...
}
}
return true;
}
...
<FORM METHOD="POST" ACTION="WebDesk?op=dm&id=11097DETH000000&FormNo=" TARGET="WorkitemContents11097DETH000000">
function doSubmit()
{
...
**// Nothing happens here on this submit
document.forms[0].submit();**
return true;
}
...
<form METHOD='POST' ACTION='WebDesk?' onsubmit="return ReqdFieldChk();">
<input TYPE='hidden' NAME='op' VALUE='f'/>
<input TYPE='hidden' NAME='id' VALUE='11097DETH000000'/>
<input TYPE='hidden' id='FormNo' NAME='FormNo' VALUE='3'/>
<input TYPE='hidden' id='send' NAME='send' VALUE='false'/>
所以FRAME1的doSubmit由onclick处理程序调用,该处理程序调用checkFieldsChanged,它在FRAME2上执行doSubmit。当我们在FRAME2中调用submit时,没有任何反应。然后,当我们返回到FRAME1时,它会提交,并且总是正常工作。
我怀疑不允许将这两个提交链接在一起进行一次用户操作。或者,IE8不喜欢这个并且不允许它。
我做了很多调试:
我可以提供原始HTML,但我不想在这个已经很大的问题上添加更多内容。
它真的归结为:我们可以从一个用户动作链接这些多个提交吗?它在IE6上运行良好多年,但现在它在IE8上运行。
答案 0 :(得分:0)
doSubmit()试试这个:
function doSubmit()
{
var frameId = document.getElementById('iframe_id');
var frameWindow= frameId .contentWindow || frameId .contentDocument;
frameWindow.forms[0].submit();
}