这是我的代码
function confirm(){
okBtn.on('click', function(){
// return true from confirm function
});
cancelBtn.on('click', function(){
// return false from confirm function
});
}
if(confirm()){
// make something. I need to keep this code here, not in confirm function
}
我需要在点击okBtn或cancelBtn后执行回调。我需要保持回调代码不在函数中,因为我有很多使用这个函数的情况。
答案 0 :(得分:4)
使confirm
函数接受回调并在事件处理程序中调用它:
function confirm(callback){
okBtn.on('click', function(){
callback(true);
});
cancelBtn.on('click', function(){
callback(false);
});
}
confirm(function(result) {
// make something. I need to keep this code here, not in confirm function
});
但是没有办法同步处理事件处理程序(就像你似乎打算这样做)。您必须绑定事件处理程序的原因是您不知道事件何时发生。相反,您必须对此事件做出反应。你必须习惯这种编码方式,没有办法解决。
答案 1 :(得分:1)
您可以简单地创建一个标志并根据用户操作进行更改,而不是使用额外的功能:
var confirm_flag; // this is undefined, which means that no actions have been taken
okBtn.on('click', function(){
validate(true);
});
cancelBtn.on('click', function(){
validate(false);
});
然后,根据用户输入,您可以确定要采取的操作方案:
function validate(flag) {
if(flag) {
alert("okBtn has been clicked, it's safe to continue");
}else{
alert("Not good!");
}
}
如果要使用确认弹出窗口中的返回值,只需将Window confirm()
函数指定给变量即可 - 如果用户单击“确定”,则返回true
var x = confirm('Is it safe?'); // will pop a confirm dialog box and return true if ok is pressed and false if cancel is pressed
答案 2 :(得分:0)
html
<button type="button" id='button1'>confirm</button>
<button type="button" id='button2'>cancel</button>
js
$('#button1').click(function(){
confirm(true);
});
$('#button2').click(function(){
confirm(false);
});
function confirm(check){
if(check){
alert('ok');
}else{
alert('cancel');
}
}
我为你做了一个小样本。您可以在if条件中编写代码,也可以在函数非常长的情况下调用另一个函数
答案 3 :(得分:0)
根据我的理解,你想要的只是当用户点击okBtn时执行一些代码,当用户点击cancelBtn时执行一些代码。如果你可以这样改变你的代码
function confirm(callback)
{
okBtn.on('click', function(){
// return true to the callback
callback(true)
});
cancelBtn.on('click', function(){
// return false to the callback
callback(false)
});
}
confirm(function(confirmed){
if(confirmed)
{
// make something
}
else
{
// do something
}
});