Отправка формы в iframe с помощью JavaScript
на 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
3 ответов
попробуйте это:
var MyIFrame = document.getElementById("myframe");
var MyIFrameDoc = (MyIFrame.contentWindow || MyIFrame.contentDocument);
if (MyIFrameDoc.document) MyIFrameDoc = MyIFrameDoc.document;
MyIFrameDoc.getElementById("myform").submit();
обновление
я не могу понять, почему это не работает, но вот что делает:
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" />
отправить URL-адрес Iframe из javascript
if (window.parent.$("#IframeId").length > 0) {
window.parent.$("#IframeId")[0].contentDocument.forms[0].submit();
}
большое спасибо за ваш совет. Я использовал JavaScript для проверки некоторой информации в форме перед ее отправкой. в "MyIFrameDoc.getElementById ("mybutton").click (); "работал, но он столкнулся с моей кнопкой отправки, которая вызвала функцию" onclick ()". Чтобы обойти, я изменил свою первоначальную кнопку отправки на класс button с функцией " onclick ()". Затем я создал новую кнопку отправки type= "submit" с id=" mybutton "со стилем=" width:1px; height:1px;border: 0; " в сущности, делая новый кнопка submit невидима и помещена над классом button с функцией " onclick ()". Пользователь нажимает кнопку класса button, и скрипт "onclick ()" проверяет информацию. Если он проверяет, сценарии проверки вызывает " MyIFrameDoc.getElementById ("mybutton").нажмите ();" и отправляет форму.