在自定义确认框中暂停执行

时间:2011-09-26 13:23:26

标签: javascript

我想创建一个像这样的自定义确认框

var should_I_move_forward = myconfirmbox();

myconfirmbox会显示一个带有Yes / No按钮的弹出窗口,我想暂停执行,直到用户点击是或否,我该如何实现?

即。与js确认方法相同的功能购买我自己的UI。

2 个答案:

答案 0 :(得分:2)

你不能。

您必须移动myconfirmbox方法中确认后的逻辑,或将其作为参数传递(以按需调用)。

类似

function ConfirmYes(){
  // do something for Yes
}

function ConfirmNo(){
  // do something for No 
}

function myconfirmbox(yesCallback, noCallback){

    // whatever you currently do and at the end

    if (confirmation == 'yes'){
      yesCallback();
    } else {
      noCallback();
    }

}

myconfirmbox(ConfirmYes, ConfirmNo);

答案 1 :(得分:1)

我所做的并不优雅,但它对我来说很好!我创建了一个自定义确认函数,如:

function jqConf(msg,y,n){
     $('body').append('<div id="confirmBox">msg</div>');
     $('#confirmBox').append('<div id="confirmButtons"></div>');
     $('#confirmButtons').append('<button onclick="'+y+'();">Yes</button>');
     $('#confirmButtons').append('<button onclick="'+n+'();">No</button>');
}

function defaultYes(){
     alert('Awesomeness!');
}

function defaultNo(){
     alert('No action taken!');
}

我这样使用它:

<button onclick="jqConf('Do you love me?','defaultYes','defaultNo')">Confirm</button>

这样我传递一个字符串,如果是,则运行的函数的名称,如果是单独的,则由用户事件执行。

正如我所说的,没有什么优雅但它有效!,我认为没有循环或令人困惑的代码?在示例中我使用的是jQuery,但也可以用纯JavaScript完成!