我想创建一个像这样的自定义确认框
var should_I_move_forward = myconfirmbox();
myconfirmbox会显示一个带有Yes / No按钮的弹出窗口,我想暂停执行,直到用户点击是或否,我该如何实现?
即。与js确认方法相同的功能购买我自己的UI。
答案 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完成!