ASP.Net Элементы управления скриптом, возвращающие False из OnClick и FireFox

StackOverflow https://stackoverflow.com/questions/341449

Вопрос

Краткое объяснение:

У меня есть элемент управления script, событие click которого обрабатывается в файле script.Обработчик щелчка выводит запрос на подтверждение и возвращает значение запроса.

Проблема:

IE видит возвращаемое значение False (Отмена выбрана в поле подтверждения), и обратной отправки нет.Firefox игнорирует это и запускает обратную отправку.

Решение?:

Я читал, что если бы я делал это по старинке, мне нужно было бы иметь:

onClick="return SomeMethod();"

В разметке.Надеюсь, есть способ сделать это с помощью элементов управления скриптом?

Пример:

Вот что у меня есть в файле сценария:

//THIS IS THE METHOD CLICK CALLS
handleLnkDeleteButtonClick: function(e)
{
    var confirmed = confirm('This will delete the current Message category and move all messages to the Oprhan cataegory.  Continue?');
    return confirmed;
},

initialize: function()
{
    this._lnkDeleteButton = $get(this._lnkDeleteButtonID);
    this._lnkDeleteButton.idpicker = this;

    //HOOK BEGINS HERE
    this._lnkDeleteButtonClick = Function.createDelegate(this, this.handleLnkDeleteButtonClick);
    $addHandler(this._lnkDeleteButton, "click", this._lnkDeleteButtonClick);
    //END HOOK HERE

    NDI.WebControls.Client.PersonalMessageTypePicker.callBaseMethod(this, 'initialize');
},

dispose: function()
{
    $removeHandler(this._lnkDeleteButton, "click", this._lnkDeleteButtonClick);
    NDI.WebControls.Client.PersonalMessageTypePicker.callBaseMethod(this, 'dispose');
}
Это было полезно?

Решение

Хорошо, так что решил это сам, потратив слишком много времени на то, чтобы правильно сформулировать что-то для Google.Оказывается, есть метод для вызова, так что вам не нужно беспокоиться о возврате true или false .

handleLnkDeleteButtonClick: function(e)
{
    var confirmed = confirm('This will delete the currery Message category and move all messages to the Oprhan cataegory.  Allow?');
    if (!confirmed)
    {
        e.preventDefault();
    }
},

Поэтому вместо того, чтобы возвращать подтверждение, мне просто нужно было проверить его значение и вызвать метод e.preventDefault, чтобы остановить запуск щелчка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top