2

我有一个 asp.net ImageButton -- 带有另一个开发人员最初编写的 OnClick 事件。它看起来像这样:

<asp:ImageButton ID="ImageButtonSaveAddress" runat="server" ImageUrl="btnSave.gif" OnClick="ImageButtonSaveAddress_Click" />

在后面的代码中,事件代码如下所示...

    protected void ImageButtonSaveAddress_Click(object sender, ImageClickEventArgs e)
    {
       if (this.SaveAddressBook())
       {
          this.RedirectToAddressBook();
       }
    }

我想做两件事。第 1 部分)禁用图像按钮,使其无法重新提交,第 2 部分)我想将 imagebutton 的 src 更改为新的“灰色”按钮(以直观地提醒用户该按钮已被按下)。

我试图用 javascript (jQuery) 来完成第 1 部分和第 2 部分。像这样。

$j(".disable-submit").click(function() {
    // replace the image
    var $this = $j(this).attr("src", imgPathSaveBtnDisabled).addClass('wait-cursor');

    // disable button from getting click again 
    // (this doesn't work, it just causes the page to stop)
    return false;
});

绝对感觉我做错了。

4

2 回答 2

1

$this.attr('disabled','disabled');以前试过return false;吗?并删除return false;

返回 false 导致该元素的默认事件停止 - 在您的示例中,提交。

它看起来像这样,

$j(".disable-submit").click(function() {
    // replace the image
    var $this = $j(this).attr("src", imgPathSaveBtnDisabled).addClass('wait-cursor');

    // disable button from getting click again 
    $this.attr('disabled','disabled');
});
于 2010-09-24T01:54:01.330 回答
1

我最近需要做同样的事情 (停止双击 - 也就是双表单帖子和灰色按钮)。

我选择为 ASP.NET 服务器端按钮创建一个继承控件,覆盖“OnClientClick”事件以禁用单击,但保留现有的回发行为(包括验证)。

看一看:

ASP.NET 自定义按钮控件 - 如何覆盖 OnClientClick 但保留现有行为?

最初我正在做你想做的事情(用 JavaScript 做这一切),但问题是你失去了现有的回发行为和页面验证。您需要在每个按钮上使用自定义代码。

上述方式是一个可重用的服务器控件,可以拖放到您想要的任何页面上,无需任何进一步的配置。

我在我的实时网站上使用它并且运行良好。

这是一个Button控件,但也可以应用于LinkBut​​ton - 因为它们都定义了OnClientClick虚拟方法。

HTH。

于 2010-09-24T03:36:03.600 回答