iframe
位于同一个域中,我尝试了以下代码,但没有一个有效:
myframe.document.getElementById("myform").submit();
parent.top.frames[0].document.forms[0].submit();
myframe.document.getElementById("myform").submit();
MyIFrame = document.getElementById("myframe");
myIFrame.getElementById("myform").submit();
更新
这是HTML:
<html>
<body>
<iframe frameborder="0" scrolling="no" width="530" height="298"
src="/iframe.php" name="myframe" id="myframe">
<p>iframes are not supported by your browser.</p>
</iframe><br />
<form action="/styles.css" method="post" id="form1">
<input type="text" name="input1" value=""/>
<input type="text" name="input2" value=""/>
<input type="button" value="test" onclick="submitFrame()">
<input type="submit" value="submit">
</form>
<script>
function submitFrame(){
var MyIFrame = document.getElementById("myframe");
var MyIFrameDoc = (MyIFrame.contentWindow || MyIFrame.contentDocument);
if (MyIFrameDoc.document) MyIFrameDoc = MyIFrameDoc.document;
MyIFrameDoc.getElementById("myform").submit(); // ## error
}
</script>
</body>
</html>
iframe.php:
<form method="post" class="af-form-wrapper" id="myform" name="myform" action="/" >
<input type="text" name="input1" value="2073809442" />
<input type="text" name="input2" value="1" />
<input type="submit" name="submit" value="submit" />
</form>
Firebug说:
MyIFrameDoc.getElementById("myform").submit is not a function
答案 0 :(得分:14)
试试这个:
var MyIFrame = document.getElementById("myframe");
var MyIFrameDoc = (MyIFrame.contentWindow || MyIFrame.contentDocument);
if (MyIFrameDoc.document) MyIFrameDoc = MyIFrameDoc.document;
MyIFrameDoc.getElementById("myform").submit();
<强>更新强>
我无法弄清楚为什么这不起作用,但这里有一些事情:
MyIFrameDoc.getElementById("mybutton").click();
iframe.php:
<input type="submit" name="submit" value="submit" id="mybutton" />
更新2
您收到submit is not a function
错误的原因是您已将提交按钮命名为submit
,因此MyIFrameDoc.getElementById("myform").submit
实际引用了HTMLInputElement
,而不是HTMLFormElement.submit()
1}}方法。
您需要做的就是重命名提交按钮,例如:
<input type="submit" name="submit2" value="submit" />
答案 1 :(得分:1)
从javascript提交Iframe的网址
if (window.parent.$("#IframeId").length > 0) {
window.parent.$("#IframeId")[0].contentDocument.forms[0].submit();
}
答案 2 :(得分:0)
您无需发布到iframe中。您可以使用普通的空白“可见”窗口。像这样定义您的表单:
var request = document.createElement("FORM")
request.id = "request"
request.name = "request"
request.action = "callYour.php"
request.method = "POST"
request.target = "_blank"
在您的php中,完成后只需关闭窗口即可:
window.close();
在HTML部分内,或在嵌入式脚本标签内。新窗口会暂时打开,但在完成后会自动关闭。
答案 3 :(得分:-3)
非常感谢您的提示。 我之前使用JavaScript来验证表单上的一些信息。 &#34; MyIFrameDoc.getElementById(&#34; mybutton&#34;)。click();&#34;工作,但它与我的提交按钮发生冲突,该按钮称为&#34; onclick()&#34;功能。为了解决这个问题,我使用&#34; onclick()&#34;将我的原始提交按钮更改为按钮类。功能。然后我创建了一个新的提交按钮类型=&#34;提交&#34; id =&#34; mybutton&#34;样式=&#34;宽度:1px;高度:1px;边框:0;&#34;本质上使新的提交按钮不可见,并将其放在按钮类的上方,使用&#34; onclick()&#34;功能。用户单击按钮类按钮,&#34; onclick()&#34;脚本验证信息。如果验证,则验证脚本调用&#34; MyIFrameDoc.getElementById(&#34; mybutton&#34;)。click();&#34;并提交表格。