【问题标题】:Stop OnClientClick="aspnetForm.target ='_blank';" from firing from other control clicks?停止 OnClientClick="aspnetForm.target ='_blank';"从其他控制点击触发?
【发布时间】:2013-10-03 20:59:08
【问题描述】:

我有一个页面,其中有一个可以打开报告的链接按钮。如果有 OnClientClick="aspnetForm.target ='_blank';" 在此链接按钮上因此报告会在新窗口/选项卡中打开。这按预期工作。我也有一个常规按钮。

如果首先单击链接按钮,则第二个按钮在单击时也会打开一个新窗口。我该如何阻止这种情况发生?

我真的不知道如何正确表达问题,所以请随意编辑问题。

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    您在 LinkBut​​ton 上的 clientClick 代码会修改整个表单目标。您可能只需添加

    OnClientClick="aspnetForm.target ='_self';"
    

    到第二个(常规)按钮。这将再次重新分配表单目标 - 这次是“自我”。

    【讨论】:

    • 做到了!谢谢!!我自己应该想到的。
    • 嘿!很好的答案。它帮助了我。但是有一点变化是有用的。我正在使用 DevExpress 并在后台进行一些其他处理。所以我使用了这个:function redirectBlank() { aspnetForm.target = '_blank'; setTimeout(function () { redirectSelf(); }, 500); } function redirectSelf() { aspnetForm.target = '_self'; } 在我的按钮中,OnClientClick 调用了第一个函数。希望这对某人也有帮助。
    【解决方案2】:

    问题是您在单击第一个按钮时重新分配了 aspnetForm.target 的值。除了这种方法,为什么不改用window.open

    OnClientClick="void(window.open('http://www.google.com')); return false;"
    

    【讨论】:

    • 我必须使用 response.redirect。我必须在后面的代码中进行一些计算并将这些新参数传递给报告。
    【解决方案3】:

    在我看来,使用这种方法的最佳解决方案是在单击此表单中包含的任何其他按钮时重置特定表单的目标。

    window.document.forms[0].target = '';

    如果您不喜欢这种方法,您可以在新标签打开后不久使用 setTimeout() 触发同一行代码。

    【讨论】:

      【解决方案4】:

      您能否尝试渲染一个 HTML 锚(而不是 asp:linkbutton),并将 href 设置为适当的 url,并将 target 属性设置为 _blank

      <a href="urlOfThePage" target="_blank" >Click me</a>
      

      【讨论】:

      • 我正在使用链接按钮,因为我必须从后面的代码构建 url。我必须操纵参数。如果我没有更改参数,我会使用它。
      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2013-06-13
      • 2019-06-20
      • 2012-12-21
      • 1970-01-01
      相关资源
      最近更新 更多