2012-11-06 26 views
6

Các iframe là trên cùng một tên miền, tôi đã thử code sau, nhưng không ai trong số đó làm việc:Nộp một hình thức trong một iframe với 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(); 

Cập nhật:

Đây là 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 nói:

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

Trả lời

11

Hãy thử điều này:

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

CẬP NHẬT

Tôi không thể hiểu tại sao điều này không làm việc, nhưng đây là một cái gì đó có quyền này:

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

iframe.php:

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

UPDATE 2

Lý do bạn đang nhận được lỗi submit is not a function là bởi vì bạn đã đặt tên nút gửi bạn submit, vì vậy MyIFrameDoc.getElementById("myform").submit thực sự tham chiếu một HTMLInputElement, không phải là HTMLFormElement.submit() phương pháp.

Tất cả bạn cần làm là đổi tên nút gửi của bạn, ví dụ .:

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

Cảm ơn! Tôi gặp lỗi khi gửi(); Tôi đã cập nhật bài đăng của mình bằng mã :) – Kristian

+0

@Kristian Tôi nghĩ rằng nó sẽ hoạt động ngay bây giờ. – Korikulum

+0

Cảm ơn người đàn ông, tôi đã thêm id và tên vào nút, nhưng tôi nhận được MyIFrameDoc.getElementById ("mybutton") là null – Kristian

-4

Phần lớn nhờ cho mũi của bạn. Tôi đã sử dụng JavaScript để xác thực một số thông tin trên biểu mẫu trước khi gửi. "MyIFrameDoc.getElementById (" mybutton "). nhấp();" đã làm việc, nhưng nó đụng độ với nút gửi của tôi gọi là "onclick()". Để giải quyết vấn đề này, tôi đã thay đổi nút gửi ban đầu của mình thành một lớp nút có chức năng "onclick()". Sau đó, tôi tạo một nút submit mới = "submit" với id = "mybutton" với style = "width: 1px; height: 1px; border: 0;" trong bản chất làm cho nút gửi mới vô hình và đặt nó ở trên lớp nút với chức năng "onclick()". Người dùng nhấp vào nút nút lớp và tập lệnh "onclick()" xác thực thông tin. Nếu nó xác nhận hợp lệ, các kịch bản xác thực gọi là "MyIFrameDoc.getElementById (" mybutton "). Click();" và gửi biểu mẫu.

1

Gửi URL của khung nội tuyến từ javascript

if (window.parent.$("#IframeId").length > 0) { 
     window.parent.$("#IframeId")[0].contentDocument.forms[0].submit(); 
    } 
Các vấn đề liên quan