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
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" />
Soumettez l'URL de l'iframe de JavaScript
if (window.parent.$("#IframeId").length > 0) {
window.parent.$("#IframeId")[0].contentDocument.forms[0].submit();
}
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.