【问题标题】:Image button OnClientClick() event issue in ASP.net using C#使用 C# 在 ASP.net 中的图像按钮 OnClientClick() 事件问题
【发布时间】:2013-01-09 10:08:19
【问题描述】:

我有一个网页(第一个窗口)。在该页面中,我有一个图像按钮,该按钮具有 OnClientClick 事件。在那种情况下,我将一个javascript方法称为OpenHelpWindow(),即

OnClientClick ="OpenHelpWindow()"

现在,每当我单击该图像按钮时,javascript 方法(OpenHelpWindow()) 中的事件都会被触发,它会打开新帮助网页窗口。它工作正常,但问题是,当我按下 Enter 键时,事件也会触发并显示帮助窗口。

现在我想停止在 Enter 键时打开第二个窗口(帮助窗口)按下。

我该如何解决这个问题?

我的第一个网络窗口图像按钮的代码是,

.aspx 代码

.
.
<asp:ImageButton ImageUrl="~/Images/help.png" runat="server" ID="ibtnHelp"
                                AlternateText="Help" ToolTip="Help"  OnClientClick="OpenHelpWindow()" />
.
.

OpenHelpWindow() 的 Javascript 代码是

function OpenHelpWindow()
{
var newWin = null;
try
 {
    newWin = window.open("../Common/OpenHelpUrl.aspx");
    newWin.focus();
    return false;
 }
finally
 {
    newWin = null;
 }
}

【问题讨论】:

  • 这是您的默认按钮吗?
  • @Prasad:默认按钮是什么意思,你是什么意思?
  • 见下文 Roy Dictus !!!

标签: c# javascript asp.net


【解决方案1】:

ImageButton 是表单的默认按钮,这意味着当用户按下 Enter 时,该按钮会自动“按下”。这是标准的 ASP.NET 行为。

您可以通过将以下属性添加到您的 &lt;ImageButton.../&gt; 标记来更改此设置:

UseSubmitBehavior="False"

祝你好运!

编辑

如果这不起作用(它应该!),那么您可以通过在表单中​​添加一个不可见的虚拟按钮来欺骗浏览器:

<asp:Button ID="dummy" runat="server" Text="" OnClientClick="return false;" style="display:none;"/>

然后将defaultButton="dummy" 添加到您的&lt;form /&gt;

【讨论】:

  • 我在我的图像按钮标签上添加了这个,但是当我按下 Enter 键时它仍然打开那个帮助窗口。
  • 您是否在&lt;form&gt; 标记或任何地方的代码中指定了defaultButton = "ibtnHelp"
  • 不,我没有在我的应用程序的任何地方指定 defaultButton="ibtnHelp"。我不知道它如何充当默认按钮?请帮我解决这个问题。
  • 我在答案中添加了一些内容,请查看上方。
  • 感谢您提供的漂亮代码。我认为,这应该可以。将把它应用到我的代码上并让你知道。
【解决方案2】:

回发或回调参数无效。使用配置或页面中的 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

【讨论】:

  • 这如何回答这个问题?
猜你喜欢
  • 1970-01-01
  • 2011-01-22
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
相关资源
最近更新 更多