Javascript 表单未提交到iFrame,在新选项卡中打开

Javascript 表单未提交到iFrame,在新选项卡中打开,javascript,html,forms,iframe,submit,Javascript,Html,Forms,Iframe,Submit,我正在使用以下html起始表单代码: <form id="uploadpic" method="post" target="uppic" name="upform" action="/cgi-bin/inpost.cgi" enctype="multipart/form-data"> 要尝试加载页面,页面将在新选项卡中打开 我不认为这是问题的一部分,但无论如何,我会包括这一点。这是表单中的提交按钮代码: <input name="filename" id="filenam

我正在使用以下html起始表单代码:

<form id="uploadpic" method="post" target="uppic" name="upform" action="/cgi-bin/inpost.cgi" enctype="multipart/form-data">

要尝试加载页面,页面将在新选项卡中打开

我不认为这是问题的一部分,但无论如何,我会包括这一点。这是表单中的提交按钮代码:

<input name="filename" id="filename" type="file" onchange="submitFormAfterImageCheck();" /> 

这就是它调用的函数:

function submitFormAfterImageCheck()
            {
                if(/(\.jpeg|\.jpg|\.JPG|\.gif|\.png|\.tiff)$/.test(document.getElementById("filename").value))
                {
                    nogo = "go";
                    document.getElementById("uploadpic").submit();
                    $("#upload").html("<center>LOADING...</center>");
                    $('#link').hide();
                    $('#update_post').hide();

                }
                else
                {
                    alert("You can only upload an image.");
                }
            }
函数submitFormAfterImageCheck()
{
if(/(\.jpeg\.jpg\.jpg\.gif\.png\.tiff)$/.test(document.getElementById(“filename”).value))
{
nogo=“go”;
document.getElementById(“uploadpic”).submit();
$(“#上传”).html(“加载…”);
$('#link').hide();
$('update_post').hide();
}
其他的
{
警报(“您只能上载图像。”);
}
}
iFrame代码:

<iframe id="uppic" name="uppic"></iframe>


为什么不提交到iframe?

DIV元素的位置似乎是个问题。虽然它被放置在表单标签中,但一旦表单提交,它就不会重定向。当从表单标签中删除时,它重定向得很好。

我也遇到了同样的问题,并找到了解决方法

当您静态设置表单的
target
属性时(正如您所做的),即使目标
iframe
在同一窗口中,也会在新的选项卡/窗口中收到响应

您可以通过使用javascript/jQuery动态设置
form
target
属性来覆盖这一点

javascript:

document.getElementById(formId).target = iframeId;
jQuery:

$("#formId").attr('target', iframeId);

希望这能有所帮助。

如果您的DOM元素没有问题(如@johndoe在回答中所述),并且在使用Javascript设置目标时仍然存在问题(如@naren在回答中所述),那么这应该可以解决问题:

为iFrame指定name属性,并将表单目标设置为该值:

<iframe name="myTarget"></iframe>

<form target="myTarget" method="post" ...></form>


是否有可能您正在加载的页面实际上是在iframe中加载的,但新页面正在打开自己的窗口,并显示在新选项卡中?@Robert Martin。。。不,我不这么认为。我知道这是一个迟来的答案,但是这是谷歌在这个问题上的一个顶级结果,它并没有解决大多数情况下的问题。扫描你,请,解释你的答案更详细?我在原始问题中没有看到对DIV元素的引用。它们从何而来?
目标必须是
名称=“”
,而不是
id=“”
。i、 e.
document.getElementById(formId).target=document.getElementById(iframeId).name