web-dev-qa-db-fra.com

Soumettre un formulaire dans un iframe avec JavaScript

Le iframe est sur le même domaine, j'ai essayé le code suivant, mais rien de tout cela n'a fonctionné:

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

Mettre à jour:

Ceci est le 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 dit:

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

Essaye ça:

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

MISE À JOUR

Je ne peux pas comprendre pourquoi cela ne fonctionne pas, mais voici quelque chose qui fait:

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

iframe.php:

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

Mise à jour 2

La raison pour laquelle vous obtenez l'erreur submit is not a function est parce que vous avez nommé votre bouton d'envoi submit, donc MyIFrameDoc.getElementById("myform").submit fait reference réellement un HTMLInputElement, pas le HTMLFormElement.submit().

Tout ce que vous avez à faire est de renommer votre bouton d'envoi, par exemple:

<input type="submit" name="submit2" value="submit" />
16
Korikulum

Soumettez l'URL de l'iframe de JavaScript

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

Vous n'avez pas besoin de poster dans iframe. Vous pouvez utiliser une fenêtre "visible" vide normale. Définissez votre forme comme ceci:

var request = document.createElement("FORM")
request.id = "request"
request.name = "request"
request.action = "callYour.php"
request.method = "POST"
request.target = "_blank"

et dans votre PHP, lorsque vous avez terminé, fermez simplement la fenêtre par:

window.close();

dans la partie HTML, ou dans les étiquettes de script intégrées. La nouvelle fenêtre s'ouvre temporairement mais se termine elle-même lorsqu'elle est terminée.

0
user2800464