JQuery中的自定义确认框,返回一个布尔值

时间:2014-08-25 17:00:10

标签: jquery jquery-ui jquery-ui-dialog

我正在使用JQuery& JQuery UI和我尝试使用JQuery UI Dialog来解决这个问题,但我无法完成它。

基本上我有这个使用JS确认框的代码:

// if user presses cancel, do not proceed to the next section of the code
if ( ! confirm('Are you sure you want to press OK?')) {
  return;
}

.... Lots of code below

我想将其转为使用我可以使用CSS自定义的自定义框。我尝试使用UI对话框:

function confirmIt(text) {
   $('#confirm_dialog').dialog({
      width: 300,
      height: 150,
      buttons: {
         "OK": function() { return true; },
         "Cancel": function() { return false; }
      }
   });
}

if ( ! confirmIt('Are you sure you want to press OK?')) {
   return;
}
.... Lots of code below

现在上面代码的问题是if条件下面的很多代码仍然执行。我知道JQuery Dialog是一个异步过程,但我想知道是否有免费的插件,我可以使用它将返回布尔值?基本上功能明智它应该与JS confirm()完全相同。我不想在JQuery UI对话框的回调中包含很多代码来实现这一点。我只想停止脚本执行如果CANCEL is clicked继续执行OK is clicked

1 个答案:

答案 0 :(得分:0)

由于无法停止脚本执行(except for debugging),您应该改变方法:

function confirmIt(text, okFunc, cancelFunc) {
   $('#confirm_dialog').dialog({
      width: 300,
      height: 150,
      buttons: {
         "OK": okFunc && okFunc,
         "Cancel": cancelFunc && cancelFunc
      }
   });
}

confirmIt('Are you sure you want to press OK?', function(){
    .... Lots of code below
}, function(){
    ...function on cancel (which can be empty)
});

因此,如果您对取消按钮没有任何操作,请使用

confirmIt('Are you sure you want to press OK?', function(){
    .... Lots of code below
});

confirmIt('Are you sure you want to press OK?', confirmFunction);

function confirmFunction(){
    .... Lots of code below
}