我正在尝试使用twitter bootstrap模式而不是自定义确认对话框.
我的功能
function getConfirm(confirmMessage){ if ( confirmMessage == undefined){ confirmMessage = ''; } $('#confirmBox').modal({ show:true,backdrop:false,keyboard: false,}); $('#confirmMessage').html(confirmMessage); $('#confirmFalse').click(function(){ $('#confirmBox').modal('hide'); return false; }); $('#confirmTrue').click(function(){ $('#confirmBox').modal('hide'); return true; }); } </script> <div class="modal" id="confirmBox" style="display: none"> <div class="modal-body"> <p id="confirmMessage">Any confirmation message?</p> </div> <div class="modal-footer"> <button class="btn" id="confirmFalse">Cancel</button> <button class="btn btn-primary" id="confirmTrue">OK</button> </div> </div>
var confimChange=getConfirm("Do You confirm?"); if(confimChange){ alert('perfect you confirmed') }else{ alert('why didnt you confirmed??') }
问题是getConfirm函数没有返回true或false.
工作代码:
if(receiverListCount > 0){ var confimChange=confirm("Message"); if(confimChange){ resetReceiverList(); }else{ return false; } }
if(activeDiv == '#upload'){ if(listOfSelectedGroups.length> 0|| receiverListCount > 0){ getConfirm("message",function(result){ if(result){ resetReceiverList(); }else{ return false; } }); } }
我决定使用bootBoxjs
解决方法
你的方法是错误的,它会执行异步的方式,所以它不会等待模态对话框在返回之前被关闭.尝试这样的东西:
function getConfirm(confirmMessage,callback){ confirmMessage = confirmMessage || ''; $('#confirmBox').modal({show:true,}); $('#confirmMessage').html(confirmMessage); $('#confirmFalse').click(function(){ $('#confirmBox').modal('hide'); if (callback) callback(false); }); $('#confirmTrue').click(function(){ $('#confirmBox').modal('hide'); if (callback) callback(true); }); } getConfirm('Are you sure?',function(result) { // Do something with result... });