动态更改表单操作以生成iframe

时间:2012-08-03 14:19:57

标签: javascript forms iframe

我正在尝试动态更改表单的操作,以便生成iframe而不是发布到下一页。这是我的代码:

var formItem = document.getElementsByTagName("form")[2].action = createIframe();
function createIframe(){
   ifrm = document.createElement("IFRAME"); 
   ifrm.setAttribute("src", "http://127.0.0.1/myIframe.html"); 
   ifrm.style.width = "50%"; 
   ifrm.style.height = "50%"; 
   document.body.appendChild(ifrm); 
} 

使用上面的代码,iframe立即生成,然后单击按钮提交表单将返回一个未定义的页面。我哪里错了?非常感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

我建议将该表单的action设置为"",然后调用该函数onsubmit

window.onload = function() {
  var formItem = document.getElementsByTagName("form")[2];
  formItem.setAttribute('action', '');
  formItem.addEventListener('submit', createIframe, false);
}

function createIframe(){
  var ifrm = document.createElement("IFRAME"); 
  ifrm.setAttribute("src", "http://127.0.0.1/myIframe.html"); 
  ifrm.style.width = "50%"; 
  ifrm.style.height = "50%"; 
  document.body.appendChild(ifrm); 
} 

答案 1 :(得分:1)

你想做这样的事吗?

<form onSubmit="javascript: return createIframe();" action="">
    <input type="submit" value='submit'/>
</form>

<script type="text/javascript">
    function createIframe(){
       ifrm = document.createElement("IFRAME");
       ifrm.setAttribute("src", "http://127.0.0.1/myIframe.html");
       ifrm.style.width = "50%";
       ifrm.style.height = "50%";
       document.body.appendChild(ifrm);
       return false;           
}
</script>

答案 2 :(得分:1)

您可以收听该submit元素的form事件。为了防止浏览器继续,只需返回false:

formItem.addEventListener('submit', function (e)) {
    createIframe();
    return false;
});

备注:您的第一行有两件事:它将formItem 指定元素的action属性设置为{的结果 {1}}。