我在一个页面中有多个iframe,每个iframe包含一个表单,我将提交按钮放在iframe之外,当用户按下提交时,所有表单都应该被提交,然后页面应该关闭,任何人都可以帮助我吗?
此功能调用onclick on提交按钮
function Save_Close()
{
if (window.frames.intake_pat_info_iframe && window.frames.intake_pat_info_iframe._Submit('Update')) {
window.frames.intake_pat_info_iframe._Submit('Update');
}
if (window.frames.intake_job_info_iframe && window.frames.intake_job_info_iframe._Submit('Update')) {
window.frames.intake_job_info_iframe._Submit('Update');
}
if (window.frames.intake_spine_his_iframe && window.frames.intake_spine_his_iframe._Submit('Update')) {
window.frames.intake_spine_his_iframe._Submit('Update');
}
if (window.frames.intake_past_med_history_iframe && window.frames.intake_past_med_history_iframe._Submit('Update')) {
window.frames.intake_past_med_history_iframe._Submit('Update');
}
...
<input type="button" id="" name="" value="Save & Close" onclick="Save_Close()"/>
日Thnx
答案 0 :(得分:0)
这不容易实现。
每个IFrame都是不同的文档,提交按钮只能在单个表单上工作,即属于的表单。
要使其生效,您需要使用javascript从所有IFrame中收集数据,以填充提交按钮所在的表单上的一个或多个隐藏字段。
如果不同的IFrame位于不同的域上,由于same origin安全策略,这将无法实现。
答案 1 :(得分:0)
只要您可以使用Javascript并且您的iframe都是从同一台服务器提供的,那就不那么难了。一个完全纯粹的内联JS方法看起来像(这是使用ASP.NET作为服务器端的东西,但重要的是按钮中的onclick()处理程序)
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>IFRAME form submit demo</title>
</head>
<body>
<iframe name="iframe1" src="my_form.aspx"></iframe>
<iframe name="iframe2" src="my_form.aspx"></iframe>
<iframe name="iframe3" src="my_form.aspx"></iframe>
<iframe name="iframe4" src="my_form.aspx"></iframe>
<input type="submit" value="Submit All IFrames"
onclick="for(var i = 0; i < frames.length; i++) { frames[i].document.forms[0].submitButton.click(); }" />
</body>
</html>
编辑:现在显式调用form.submitButton.click()而不是form.submit()来调用绑定提交按钮的Click处理程序的函数。