Как отключить asp.net ImageButton, который подключен к событию сервера (чтобы его нельзя было повторно опубликовать) - PullRequest
2 голосов
/ 24 сентября 2010

У меня есть 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();
       }
    }

Я хотел бы сделать 2 вещи.Часть 1) отключить кнопку изображения, чтобы она не могла быть повторно отправлена, и Часть 2) Я хотел бы изменить src кнопки изображения на новую кнопку, выделенную серым цветом (чтобы визуально предупредить пользователя, что кнопка была нажата).

Я пытался сделать обе части 1 и 2 с помощью javascript (jQuery).Как это.

$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;
});

Мне определенно кажется, что я ошибаюсь.

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Мне нужно было сделать в последнее время точно такую ​​же вещь (прекратить двойной щелчок - или двойную форму сообщений, и кнопку серого).

Я решил создать элемент управления, наследующий дляКнопка на стороне сервера ASP.NET, переопределяющая событие «OnClientClick», чтобы отключить ее при нажатии, но сохранить существующее поведение обратной передачи (включая проверку).

Посмотрите:

ASP.NET Custom Button Control - Как переопределить OnClientClick, но сохранить существующее поведение?

Первоначально я делал то, что вы пытаетесь сделать (сделать все это с помощью JavaScript), но проблема в том, что вы теряетесуществующее поведение обратной передачи и проверка страницы.Вам потребуется индивидуальный код для каждой кнопки.

Вышеприведенный способ - это многократно используемый серверный элемент управления, который можно перетаскивать на любую нужную страницу без какой-либо дополнительной настройки.

I'mиспользуя его на моем живом веб-сайте и прекрасно работает.

Это элемент управления Button , но его также можно применить к LinkButton - так как они оба определяют OnClientClick виртуальный метод.

HTH.

1 голос
/ 24 сентября 2010

вы пробовали $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');
});
...