2012-11-06 77 views
6

iframe是在同一个领域,我想下面的代码,但没有它的工作:表单提交的iframe中使用JavaScript

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> 

萤火虫说:

MyIFrameDoc.getElementById("myform").submit is not a function 

回答

11

试试这个:

var MyIFrame = document.getElementById("myframe"); 
var MyIFrameDoc = (MyIFrame.contentWindow || MyIFrame.contentDocument); 
if (MyIFrameDoc.document) MyIFrameDoc = MyIFrameDoc.document; 
MyIFrameDoc.getElementById("myform").submit(); 

UPDATE

我想不通为什么,这并不工作,但这里是东西做:

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()方法。

所有你需要做的是重新命名您的提交按钮,例如:

<input type="submit" name="submit2" value="submit" /> 
+0

由于提交iframe的网址!我在提交()时出错。我用代码更新了我的帖子:) – Kristian

+0

@Kristian我认为它现在可以工作。 – Korikulum

+0

谢谢你,我添加了id和name到按钮,但是我得到了MyIFrameDoc.getElementById(“mybutton”)为空 – Kristian

-4

为你的提示,不胜感谢。 我在使用JavaScript在发送之前验证表单上的某些信息。 “MyIFrameDoc.getElementById(”mybutton“)。click();”工作,但它与我的提交按钮发生冲突,该按钮称为“onclick()”函数。为了解决问题,我使用“onclick()”函数将原始提交按钮更改为按钮类。然后我用style =“width:1px; height:1px; border:0;”创建了一个新的提交按钮type =“submit”,id =“mybutton”实质上使新的提交按钮不可见,并使用“onclick()”函数将其放在按钮类上方。用户点击按钮类按钮,“onclick()”脚本验证信息。如果验证,验证脚本调用“MyIFrameDoc.getElementById(”mybutton“)。click();”并提交表格。

1

从JavaScript

if (window.parent.$("#IframeId").length > 0) { 
     window.parent.$("#IframeId")[0].contentDocument.forms[0].submit(); 
    }