我正在尝试动态更改表单的操作,以便生成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 :(得分: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}}。