Javascript confirm()覆盖函数

时间:2014-02-22 11:35:31

标签: javascript jquery confirm

我想用jquery UI自定义对话框覆盖javascript confirm(),所以我可以像这样使用它:

<form action="http://google.com">
   <input onClick="return confirm('go Google?')" id="nupp" value="nupp"/>
</form>

我已经超越了它,但问题是我无法让它像原版一样运转。我知道我不能让它100%像原版一样工作,但我能做出的最接近的事情是什么? 他们说我可能能够使用延迟对象或回调。

现在,我已设法使其仅在页面上使用提交按钮和一个表单运行。如果我有两种形式或其他东西它不会工作。我或许能够识别按钮以及提交按钮的形式。代码在这里:

window.confirm = function(c) {
$(this).submit(function(e){
    e.preventDefault()
});
    $('#overrideAlert').text(c).dialog({
        resizable:false,
        autoOpen:true,
        modal:true,
        dialogClass: "alert",
        title:'Teade',
        draggable:false,
        closeOnEscape:false,
        buttons: {
            "Ok" : {
                id: "okay",
                text: "Ok",
                click: function(){

                }
            },
            "Cancle" : {
                id: "cancle",
                text: "Cancle",
                click: function(){
                    $(this).dialog('close');    
                }
            }
        }
    });

};

但是现在我认为我必须做这样的事情(它已被破坏,只是试图调查它):

window.confirm = function(c) {
    var dfd = $.Deferred();
        $('#overrideAlert').text(c).dialog({
            resizable:false,
            autoOpen:true,
            modal:true,
            dialogClass: "alert",
            title:'Teade',
            draggable:false,
            closeOnEscape:false,
            buttons: {
                "Ok" : {
                    id: "okay",
                    text: "Ok",
                    click: function(d){
                        $(this).dialog('close');
                        var a = 1;
                        console.log(a);
                        dfd.resolve();
                    }
                },
                "Cancle" : {
                    id: "cancle",
                    text: "Cancle",
                    click: function(){
                        $(this).dialog('close');
                        var a = 0;
                        console.log(a);
                        dfd.reject();
                    }
                }
            }
        });
        console.log(dfd);
        return dfd.promise();

};
$.when( confirm('hey') ).then(
        function() {
            console.log("true")
        },
        function(d) {
            console.log("false")
        });

0 个答案:

没有答案