【问题标题】:Is it possible to manipulate the target window of a form using Jquery是否可以使用 Jquery 操作表单的目标窗口
【发布时间】:2015-04-01 17:37:45
【问题描述】:

我收到了关于表单目标及其目标窗口的问题。假设我们有这个 Html.BeginForm

@using (Html.BeginForm("TestHtmlRedirect", "Home", FormMethod.Post, new {@target="_blank", @id = "tagging_frm", @class = "form-horizontal row-border" }))
{
    <input type="submit" value="Html PsBk Click" />
}

通常在单击提交按钮时会触发一个新标签,我的问题是 如何或者是否可以在此表单的新创建选项卡上附加一些内容?

例如,我想通过父选项卡在新创建的选项卡上附加加载 gif。

【问题讨论】:

  • $("#dom").append("#anotherdom");
  • 在选项卡上附加什么?如果要将 html 添加到结果选项卡中,则需要为其命名 - 例如将 _blank 更改为 _mywin 并且如果表单的操作与脚本的来源相同,则可以执行 var myWin = window.open("","_mywin"); 来获取处理然后做$(mywin).find('#somediv').append('some stuff'); - 现在你已经改变了问题,我会改变整个事情来打开窗口,添加加载器,然后将表单定位到 iFrame
  • @mplungjan 但这里的问题是它是由表单生成的。是否可以在该选项卡上附加一些东西

标签: javascript jquery forms


【解决方案1】:

假设动作和脚本都来自同一个服务器/来源,您可以这样做:

$(function() {
  $("#tagging_frm").on("submit",function(e) {
    e.preventDefault(); // cancel submit
    var w=window.open("",this.target);
    w.document.write('<div id="container"><img src="loading.gif"/></div>');
    w.document.close();
    $.post(this.action,function(data) {
      w.document.getElementById("container").innerHTML=data;
    });
  });
});

要加载 csv 或 pdf 试试这个替代方法

$(function() {
  $("#tagging_frm").on("submit",function(e) {
    e.preventDefault(); // cancel submit
    var w=window.open("",this.target);
    w.document.write('<form id="myForm" action="'+this.action+'" target="myframe" method="post"></form><img id="loading" src="loading.gif"/><iframe name="myframe" onload="document.getElementById(\'loading\').style.display=\'none\'"></iframe>');
    w.document.close();
    w.document.getElementById("myForm").submit();
  });
});

【讨论】:

  • 我想我应该删除表格上的_mywin??
  • 如果你想定位一个 iFrame 就不行。如果所有脚本和表单操作都来自同一来源,则 ajax 数据并显示它。然后你可以在加载时做任何你想做的事情
  • 我试过你的代码,它打开了 2 个窗口。附加的和其他空白的
  • 可能存在时间问题。我们需要推迟提交,直到 iframe 存在。如果所有脚本动作和表单都在同一个服务器上,你能回答我吗?
  • 是的。我想要实现的是在表单生成的选项卡上附加 iframe,但我无法使用任何 jquery 来完成。我们如何使用该选项卡,或者有没有办法说例如 $(_tab).append("
    Hello World
    ")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多