Javascript оповещение с подтверждением - PullRequest
1 голос
/ 18 декабря 2009

На моей странице есть всплывающее окно с предупреждением JavaScript. Проблема, с которой я столкнулся, заключается в том, что вместо того, чтобы ждать, пока пользователь действительно нажмет кнопку OK, он просто выполняет перенаправление, что-то, что он должен сделать ПОСЛЕ нажатия кнопки ОК. Может кто-нибудь, пожалуйста, помогите мне настроить мой код так, чтобы это работало так, как должно?

function f()
{

    ar ape =radalert('<div align=""center"" style=""font-weight: bold;""> OPEN BOX HERE</div>', 123, 200);
if(ape)window.location.href = "/Default.aspx";
Sys.Application.remove_load(f);
}

Sys.Application.add_load(f);

Ответы [ 3 ]

4 голосов
/ 18 декабря 2009

Вы можете использовать метод add_close для добавления функции обратного вызова, чтобы знать, когда предупреждение закрыто:

var win = radalert('foo');
win.add_close(function () {
  alert('bar'); // This will be executed when the radalert is closed.
});

Подробнее:

2 голосов
/ 18 декабря 2009

Вы не используете JavaScript alert (в смысле встроенной функции), похоже, вы используете что-то под названием radalert (от Telerik). Это означает, что не может вести себя как JavaScript alert, что приводит к полной остановке обработки скрипта, пока он находится на экране.

Я ничего не знаю о Telerik, но большинство из этих замен предупреждений предлагают обратный вызов, который вы можете передать, который срабатывает, когда предупреждение очищено. Вот где вы хотите свой window.location.href = ... код.

Обычно это выглядит примерно так:

function blah() {

    niftyAlertThingy("Here's my message", {
        onOK: function() {
            window.location.href = "/Default.aspx";
            // etc.
        }
    });
}

Эта функция blah немедленно возвращает с предупреждением на странице; затем код оповещения вызывает ваш обратный вызов, когда пользователь нажимает кнопку ОК.

Я уверен, что Telerik radalert имеет нечто подобное ...

1 голос
/ 18 декабря 2009

Я думаю, что вашему коду потребуются дополнительные пояснения и, возможно, ваш код тоже (просто соответствующий код о том, как вы обрабатываете «ОК», нажмите). Мой опыт работы с Telerik не очень хорош. Я бы предложил вам попробовать jQuery UI. Это дает вам лучший контроль над тем, как вы можете обрабатывать события и где.

Пример (с здесь )

$(function(){

    $("#dialog").dialog({
    autoOpen: false,
    modal:true,
    buttons : {
        "Yes" : function() {              
            $(this).dialog("close");
            eval($("#<%= hdnBtnPostback.ClientID %>").val());
        },
        "No" : function() {
            $(this).dialog("close");
        },
        "Maybe": function() {
            $(this).dialog("close");
            //what should we do when "Maybe" is clicked?
        }        
    }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...