jQuery confirm.js将结果返回给布尔值

时间:2017-10-22 06:55:12

标签: javascript jquery confirm

我使用此plugin,我将确认方法包含在函数中,以便我每次都可以使用它https://jsfiddle.net/8g0j4unj/

function askQuestion($msg){
    $.confirm({
        icon : 'fa fa-question-circle-o',
        content : ''+$msg+'',
        theme : 'supervan',
        closeIcon: true,
        animation: 'scale',
        type: 'orange',
        draggable:'true',
        buttons:{
            'Continue' : {
                keys : ['enter'],
                action : function(){
                    return 1;
                }
            },
            'Cancel': {
                keys : ['esc'],
                action: function(){
                    this.close();
                }
            }
        }
    });
}

当我尝试使用此功能时,它不会执行任何操作但继续该过程,当用户确认或取消条件时,如何将该函数返回到布尔值?

$(document).on('click','.sample',function(){
    if(askQuestion('Are you sure want to continue without adding a server') == 1){
                alert('Confirmed');
            }
    else{
       alert('Cancelled');
    }

});

2 个答案:

答案 0 :(得分:0)

我真的不知道你为什么要这样做,而这个插件有callback功能,你可以轻松使用它。您试图检测用户是否点击了ConfirmCancel按钮,因此您无需使用此功能:

$(document).on('click','.sample',function(){});

您的代码完全错误,因为您希望通过单击按钮从函数中获取返回的数据!但是这个?

askQuestion('Are you sure want to continue without adding a server') 

实际上它没有任何回报。无论如何。您只需使用callback

即可检测到
function askQuestion($msg){
    $.confirm({
        icon : 'fa fa-question-circle-o',
        content : ''+$msg+'',
        theme : 'supervan',
        closeIcon: true,
        animation: 'scale',
        type: 'orange',
        draggable:'true',
        buttons:{
            'Continue' : {
                keys : ['enter'],
                action : function(){
                    alert('Confirmed'); // if clicked on confirm
                }
            },
            'Cancel': {
                keys : ['esc'],
                action: function(){
                    this.close();
                    alert('Canceled'); // if clicked on cancel
                }
            }
        }
    });
}

<强> JSFiddle

答案 1 :(得分:0)

这可以通过callback函数来完成。

$(document).on('click','.sample',function(){
askQuestion('Are you sure want to continue without adding a server', function(val){               
           if(val==1){
              alert("Msg: confirmed");
              //do something
           }
           else{
              alert("Msg : rejected");
           }
  });
});

function askQuestion($msg, callback){
$.confirm({
    icon : 'fa fa-question-circle-o',
    content : ''+$msg+'',
    theme : 'modern',
    closeIcon: true,
    animation: 'scale',
    type: 'orange',
    draggable:'true',
    buttons:{
        'Continue' : {
            keys : ['enter'],
            action : function(){
                callback(1);
            }
        },
        'Cancel': {
            keys : ['esc'],
            action: function(){
                this.close();
                callback(0);

            }
        }
    }
});
}

这是callback的使用方式,

因此,与其在askQuestion()语句中使用if(), 在callback函数体中编写代码和条件。

JS Fiddle