表单未提交至iFrame,将在新标签中打开

时间:2011-09-05 05:31:59

标签: 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="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.");
                }
            }

iFrame代码:

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

为什么不提交iframe?

3 个答案:

答案 0 :(得分:5)

我也面临同样的问题并找到了解决方法。

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

您可以使用javascript / jQuery动态设置target form属性来覆盖此内容。

的javascript:

document.getElementById(formId).target = iframeId;

jQuery的:

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

希望这有帮助。

答案 1 :(得分:2)

如果你的DOM元素没有问题(正如@johndoe在他的回答中所说)你在使用Javascript设置目标时仍然遇到问题(正如@naren在他的回答中所说)那么这应该可以解决问题:

为您的iFrame指定名称属性,并将表单目标设置为该值:

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

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

答案 2 :(得分:-1)

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