我的问题是我的变量flag
没有得到更新,我甚至试图用setTimeout
函数做到这一点,但没有运气!
的JavaScript
function confirmed(msg, okFtn, cnclFtn){
flag=false;
$(document.createElement('div')).html('\
<div style="max-width:250px;width:100%;">'+msg+'\
<p>\
<button value="yes" class="button small gradient blue left rnd5 cnfrm">OK</button>\
<button value="no" class="button small gradient blue left rnd5 cnfrm">Cancel</button>\
</p></div>')
.modal({
onShow: function (dialog) {
$('.simplemodal-close').remove();
$("#simplemodal-container").css({'height': 'auto','width':'auto'});
$(window).trigger('resize.simplemodal');
},
onClose: function(){
console.log(flag);
if(flag)
return true;
else
return false;
}
});
$('button.cnfrm').click(function(){
flag=true;
if ($(this).val() == 'yes') {
if(okFtn && typeof okFtn === 'function')
okFtn();
} else {
if(cnclFtn && typeof cnclFtn === 'function')
cnclFtn();
}
setTimeout(function(){$.modal.close();}, 1000);
});
}
这是我所说的Fiddle link。
由于变量没有设置,因此$.modal.close()
工作不正常,我想要的只是关闭模态对话框,当且仅当点击了按钮OK
或cancel
时。
答案 0 :(得分:2)
http://www.ericmmartin.com/projects/simplemodal/
来自文档:
onClose:用于向关闭模态对话框元素添加效果。在你应用了效果等之后,你需要调用$ .modal.close();所以SimpleModal可以正确地重新插入数据并清理对话框元素。
您需要在$.modal.close()
处理程序中添加对onClose()
的调用,例如
onClose: function(){
console.log(flag);
if(flag) $.modal.close();
}
PS。对于flag
变量,它的设置与您预期的完全相同。这不是问题。