2011-09-26 87 views
1

我想创建这样定制确认框暂停执行

var should_I_move_forward = myconfirmbox(); 

myconfirmbox一个自定义的确认框会显示是/否按钮弹出,我想在这里暂停执行,直到用户打yes或no ,我该如何实现它?

即与js相同的功能确认方法购买我自己的用户界面。

+2

暂停执行什么?只需从确认框中回拨即可 –

回答

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

我根本没有优雅,但它对我来说工作得很好!我创建一个自定义的确认功能,如:

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完成!