SimpleModal подтверждение и переход к оригинальному href - PullRequest
2 голосов
/ 08 декабря 2011

Я ищу и не могу найти решение.Надеюсь, я упускаю что-то простое.

Что мне нужно, так это стандартное подтверждение jquery, например:

$('.confirm').click(function(){
    var answer = confirm('Delete '+jQuery(this).attr('title'));
    return answer // answer is a boolean
});    

Однако я бы хотел использовать SimpleModal для окна предупреждения,Я могу заставить SimpleModal появляться и работать, если я делаю что-нибудь , за исключением , и пытаюсь заставить исходный href продолжить, если нажать кнопку "Да" в диалоге SimpleModal......

jQuery(function ($) {

$('.confirm').click(function (e) {
    e.preventDefault();
    confirm("", function () {
        //alert('yes');
        $('.confirm').trigger('click');
    });
});
});

function confirm(message, callback) {
$('#confirm').modal({
    closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
    position: ["20%",],
    overlayId: 'please-wait',
    containerId: 'confirm-container', 
    onShow: function (dialog) {
        var modal = this;
        $('.message', dialog.data[0]).append('Delete '+$('a.confirm').attr('title'));

        // if the user clicks "yes"
        $('.yes', dialog.data[0]).click(function () {
            // call the callback
            if ($.isFunction(callback)) {
                callback.apply();
            }
            // close the dialog
            modal.close(); 
        });
    }
});
}

У меня также было закомментировано предупреждение в функции подтверждения.Предупреждение работает.Но как мне заставить браузер перейти к исходному href?

Спасибо!

1 Ответ

1 голос
/ 08 декабря 2011

Прежде всего вам нужно изменить обработчик кликов, чтобы передать URL ссылки:

jQuery(function ($) {
    $('.confirm').click(function (e) {
        e.preventDefault();
        confirm($(this).prop("href"), "", function () {
            $('.confirm').trigger('click');
        });
    });
});

Если вы используете jQuery 1.6 или менее, используйте $(this).attr("href") вместо .prop()

Затем измените функцию, чтобы использовать этот URL:

function confirm(url, message, callback) {
    $('#confirm').modal({
        closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
        position: ["20%",],
        overlayId: 'please-wait',
        containerId: 'confirm-container', 
        onShow: function (dialog) {
            var modal = this;
            $('.message', dialog.data[0]).append('Delete '+$('a.confirm').attr('title'));

            // if the user clicks "yes"
            $('.yes', dialog.data[0]).click(function () {
                // call the callback
                if ($.isFunction(callback)) {
                    callback.apply();
                }
                // close the dialog
                modal.close(); 

                // transfer to the url:
                window.location.assign(url);
            });
        }
    });
}
...