2012-08-07 47 views
1

我想編輯一個頁面,以便提交表單,而不是產生一個iframe。如果我使用此代碼:iframe沒有被生成,但與警報工作相同的代碼

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); 
} 

然後,當提交表單時不會生成iframe。但是,如果我將createIframe()函數設置爲:

function createIframe(){ 
    alert(1); 
    } 

然後,在提交表單時創建警報。因此,它必須是我的iframe代碼的問題,但我無法弄清楚什麼!有沒有人有什麼建議?謝謝

回答

2

您忘記取消form的默認行爲。

function createIframe(e){ 
    e.preventDefault(); 
    //... 

沒有這一點,表單將頁面提交給自己一個空action屬性。

Fiddle

event.preventDefault() MDN Reference

+0

非常完美 - 非常感謝!對preventDefault()不熟悉,所以我也學到了一些新東西 - 歡呼聲! – Jingo 2012-08-07 10:54:31

+0

@Jingo沒問題。 '=]'在這種情況下,我只是鏈接到我的答案中的'preventDefault()'MDN頁面,該頁面顯示了另一個示例,儘管名稱很明顯。 ':)' – 2012-08-07 11:02:35

+0

太棒了 - 再次感謝! – Jingo 2012-08-07 11:15:22

相關問題