0

我正在尝试动态更改表单的操作,以便它生成 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 会立即生成,然后单击按钮提交表单会返回一个未定义的页面。我哪里错了?非常感谢您的帮助!

4

3 回答 3

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); 
} 
于 2012-08-03T14:43:39.440 回答
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>
于 2012-08-03T14:52:20.263 回答
1

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

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

备注:您的第一行做了两件事:它将指定元素formItem action属性设置为.createIframe

于 2012-08-03T14:52:29.720 回答