在使用JavaScript的iframe提交表单(Submitting a form in an i

2019-07-03 15:05发布

iframe是在同一个领域,我想下面的代码,但没有它的工作:

 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>

Firebug的说:

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

Answer 1:

试试这个:

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" />


Answer 2:

从JavaScript提交iframe的网址

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


Answer 3:

很多感谢你的小费。 我使用的是JavaScript来验证表单上的一些信息被发送之前。 在 “MyIFrameDoc.getElementById(” myButton的 “)点击();”。 的工作,但它与我的提交按钮,这被称为“点击()”函数发生冲突。 要工作的时候,我改变了我的原单提交按钮一个按钮类的“点击()”函数。 然后,我创建了一个新的提交按钮类型=“提交”使用id =“myButton的”有风格=“WIDTH:1px的;高度:1px的;边界:0;” 在本质上使新提交按钮不可见,并与“点击()”函数把它放在按钮类的上方。 用户点击该按钮类按钮,“点击()”脚本验证信息。 如果验证,验证脚本调用 “MyIFrameDoc.getElementById(” myButton的 “)点击();”。 并提交表单。



文章来源: Submitting a form in an iframe with JavaScript