2012-11-06 14 views
6

iframe jest w tej samej domenie, próbowałem poniższy kod, ale żadna z nich nie pracował:przesłanie formularza w iframe z 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(); 

Aktualizacja:

Jest to 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 mówi:

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

Odpowiedz

11

Spróbuj tego:

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

UPDATE

Nie mogę zrozumieć, dlaczego to nie działa, ale tutaj jest coś, co robi:

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

iframe.php:

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

UPDATE 2

Powodem dostajesz błąd submit is not a function to dlatego, że nazwał swoją złożyć przycisk submit, więc MyIFrameDoc.getElementById("myform").submit faktycznie odwołuje się HTMLInputElement, nie HTMLFormElement.submit() metoda.

Wszystko, co musisz zrobić, to złożyć swój przycisk zmiany nazwy, np .:

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

Dzięki! Dostaję błąd na submit(); Zaktualizowałem swój post z kodem :) – Kristian

+0

@Kristian Myślę, że zadziała. – Korikulum

+0

Dziękuję, dodałem id i nazwę do przycisku, ale otrzymałem MyIFrameDoc.getElementById ("mybutton") jest null – Kristian

-4

Much dzięki za czubka. Użyłem skryptu JavaScript do sprawdzenia poprawności niektórych informacji w formularzu przed jego wysłaniem. "MyIFrameDoc.getElementById (" mybutton "). click();" pracował, ale zderzył się z moim przyciskiem przesyłania, który nazwał funkcję "onclick()". Aby obejść ten problem, zmieniłem swój przycisk przesyłania orginalnego na klasę przycisków z funkcją "onclick()". Następnie utworzyłem nowy przycisk wysyłania type = "submit" o id = "mybutton" ze stylem = "width: 1px; height: 1px; border: 0;" co w zasadzie powoduje, że nowy przycisk przesyłania jest niewidoczny i umieścił go nad klasą przycisków za pomocą funkcji "onclick()". Użytkownik klika przycisk klasy przycisku, a skrypt "onclick()" sprawdza poprawność informacji. Jeśli sprawdzi, skrypty sprawdzania poprawności wywołają "MyIFrameDoc.getElementById (" mybutton "). Click();" i przesyła formularz.

1

Prześlij adres URL iframe z javascript

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