我正在显示删除确认对话框,我希望用户点击YES或NO的结果为TRUE或FALSE
现在,由于Javascript功能异步,下面代码中的变量 yesDelete 不会等待用户选择确认。
现在,有没有办法将值 r 作为ShowDeleteConfirm()函数的返回值返回?
function ShowDeleteConfirm() {
var yesDelete=false;
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
yesDelete = r;
});
return yesDelete;
}
答案 0 :(得分:1)
一种方法是将回调函数作为参数传递给ShowDeleteConfirm()
或jConfirm()
。像这样:
function ShowDeleteConfirm(callback) {
//someone correct me if I'm out of scope here...
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
callback(r);
});
}
我认为这样可行,但我不确定callback
是否属于jConfirm的回调范围。值得一试:)
另一种方法是让jConfirm回调函数在window
对象上设置一个全局可见的属性。
无论如何,希望至少有点帮助...
修改强>
因为JS是异步的,所以我认为您不能根据用户输入ShowDeleteConfirm()
返回true
或false
。因此需要传递不同的回调函数:ShowDeleteConfirm(yourCallbackFunctionHere)
。你可以这样做:
ShowDeleteConfirm(function(result) {
//result should be true or false
});
但我认为这就像你将得到的那样接近。如果这对你不起作用,那么你应该考虑改变你的设计以适应JS异步的事实。
祝你好运!答案 1 :(得分:0)
我认为以下是你的情况:
if (ShowDeleteConfirm()){
myFunc();
}
function ShowDeleteConfirm() {
var yesDelete=false;
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
yesDelete = r;
});
return yesDelete;
}
应该是这样的:
ShowDeleteConfirm(myFunc的);
function ShowDeleteConfirm(myFunc) {
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
if (r){
myFunc();
}
});
}