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

Joh*_*Doe 5 html javascript forms iframe submit

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

<form id="uploadpic" method="post" target="uppic" name="upform" action="/cgi-bin/inpost.cgi" enctype="multipart/form-data">
Run Code Online (Sandbox Code Playgroud)

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

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

<input name="filename" id="filename" type="file" onchange="submitFormAfterImageCheck();" /> 
Run Code Online (Sandbox Code Playgroud)

这就是它所调用的功能:

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.");
                }
            }
Run Code Online (Sandbox Code Playgroud)

iFrame代码:

<iframe id="uppic" name="uppic"></iframe>
Run Code Online (Sandbox Code Playgroud)

为什么不提交iframe?

小智 5

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

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

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

JavaScript的:

document.getElementById(formId).target = iframeId;
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$("#formId").attr('target', iframeId);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • `&lt;form&gt;` 的 `target` 必须是 `&lt;iframe&gt;` 的 `name=""`,而不是 `&lt;iframe&gt;` 的 `id=""`。即 `document.getElementById( formId ).target = document.getElementById( iframeId ).name;` (2认同)

Joh*_*Doe -2

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

  • 您能更详细地解释一下您的答案吗?我在原始问题中没有看到对 DIV 元素的引用。他们从哪里来? (3认同)