2

alert像这样用fancybox扩展了我的所有东西

window.alert = function(message){
    $("#alert_message_box .warmsg span").html(message);
    $.fancybox({'href':'#alert_message_box'});
    return false;
}

并且工作正常。我也尝试confirm像这样扩展盒子

 window.confirm = function(message){
    $("#confirm_message_box .warmsg span").html(message);
    $.fancybox({'href':'#confirm_message_box'});
}

confirm_message_boxdiv 包含两个按钮,YesNo.

if(confirm(alert_msg)){ } 在这种情况下,如何confirm调用函数以及如何返回truefalse调用函数

我不知道覆盖这些函数是否有任何问题。

这是一个带有 jquery 的 jsfiddle 演示(此处未使用 fancybox)

http://jsfiddle.net/fzTa3/

4

2 回答 2

1

在这种情况下,您将不得不更改您的工作流程,因为 Fancybox 版本的确认不是模式对话框(它不会暂停脚本执行)。您必须使用回调来调用相应的按钮点击:

window.confirm = function(message, onYes, onNo) {
    $("#confirm_message_box .warmsg span").html(message);
    $.fancybox({
        href: '#confirm_message_box'
        afterLoad: function() {
            this.inner.find('.btn-yes').click(onYes);
            this.inner.find('.btn-no').click(onNo);
        }
    });
}

您需要将onYes函数绑定到按钮Yes和您的 fancybox 初始化。onNoNo

用法是这样的:

confirm('Are you sure?', function() {
    // he is sure
}, function() {
    // cancel something
});
于 2013-03-13T06:45:05.040 回答
0

不同意@dfsq 的回答,但我发现是,没有回调方法过于严格,而我自己在处理这个问题时发现了一种更灵活的方法来解决这个问题。

示例用法:

confirm("Do you wish to continue?", 
    {
        /* 
        Define your buttons here, can handle multiple buttons 
        with custom title and values
        */
        buttons: [
            { class: "yes", type: "button", title: "Yes", value: "yes" },
            { class: "no", type: "button", title: "No", value: "no" },
            { class: "maybe", type: "button", title: "Maybe?", value: "maybe" }
        ],
        modal: true
    }, 
    function(resp) {
        alert("You clicked " + resp);
    }
);
于 2014-08-04T08:31:10.467 回答