2012-11-06 4 views
6

Die iframe auf der gleichen Domäne ist, habe ich versucht, den folgenden Code, aber nichts davon war:ein Formular in einem Iframe mit JavaScript Einreichen

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(); 

Update:

die HTML Dies ist:

<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 sagt:

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

Antwort

11

Try this:

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

UPDATE

ich nicht herausfinden können, warum dies nicht funktioniert, aber hier ist etwas, das tut:

MyIFrameDoc.getElementById("mybutton").click(); 

iframe.php:

<input type="submit" name="submit" value="submit" id="mybutton" /> 

UPDATE 2

Der Grund Sie zum submit is not a function Fehler ist, weil Sie Ihre Schaltfläche submit einreichen benannt haben, so MyIFrameDoc.getElementById("myform").submit eigentlich verweist ein HTMLInputElement, nicht die HTMLFormElement.submit() Methode.

Alles, was Sie tun müssen, ist Ihren Absenden-Button umbenennen, z.B .:

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

Dank! Ich erhalte einen Fehler bei submit(); Ich aktualisierte meinen Beitrag mit Code :) – Kristian

+0

@Kristian Ich denke, es wird jetzt funktionieren. – Korikulum

+0

Danke Mann, ich habe ID und Name der Schaltfläche hinzugefügt, aber ich bekomme MyIFrameDoc.getElementById ("mybutton") ist null – Kristian

-4

Vielen Dank für Ihren Tipp. Ich habe JavaScript verwendet, um einige Informationen in einem Formular zu validieren, bevor es gesendet wurde. das "MyIFrameDoc.getElementById (" meinbutton "). click();" funktionierte, aber es kollidierte mit meinem Submit-Button, der eine "onclick()" -Funktion aufruft. Zur Umgehung habe ich meinen ursprünglichen Submit-Button mit der Funktion "onclick()" in eine Button-Klasse geändert. Dann habe ich einen neuen Submit-Button type = "submit" mit id = "mybutton" mit einem style = "width: 1px; height: 1px; border: 0;" Im Wesentlichen wird der neue Submit-Button unsichtbar und über die Button-Klasse mit der "onclick()" -Funktion platziert. Der Benutzer klickt auf die Schaltflächenklassenschaltfläche, und das "Onclick()" - Skript überprüft die Information. Wenn es validiert wird, ruft das Validierungsskript "MyIFrameDoc.getElementById (" meinbutton ") auf. Click();" und reicht das Formular ein.

1

die URL der Iframe Senden von Javascript

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