2012-11-06 141 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(); 
    }