2012-08-03 26 views
0

我試圖動態更改表單的動作,以便生成一個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要催生立即然後單擊按鈕提交表單返回一個未定義的頁面。我哪裏錯了?非常感謝您的幫助!

+0

您是否停止了具有生成此iframe的按鈕的窗體的操作?如果你不這樣做,那麼你會產生iframe,然後正常的表單提交會發生。 – 2012-08-03 14:22:05

+0

我試圖覆蓋原始表單操作,以便它調用函數來生成iframe,而不是提交到下一頁 – Jingo 2012-08-03 14:23:49

+0

您的第一行調用createIframe()函數,這就是爲什麼iframe出現在頁面加載本身。 – 2012-08-03 14:46:54

回答

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

你試圖做這樣的事情?

<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> 
1

你可以聽的submit事件form元素。爲了防止瀏覽器繼續,剛剛返回false:

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

備註:您的第一線做了兩兩件事:它集formItem指定元素的action屬性爲結果createIframe