2012-07-12 86 views
0

我需要从javascript confirm转换为利用jquery ui确认对话框。问题是,我需要调用并打开确认对话框 - 我需要根据用户单击的按钮(确定/取消)返回true/false。我知道JavaScript是异步的,但我坚持如何做到这一点?任何人都可以将我指向正确的方向吗?获得jquery确认返回功能的结果

$(document).ready(function() { 

     $('#dialog:ui-dialog').dialog('destroy'); 

     $('#confirm-delete-quote').dialog({ 
      autoOpen: false, 
      modal: true, 
      buttons: { 
       OK: function() { 
        $(this).dialog('close'); 
        callback(true); 
       }, 
       Cancel: function() { 
        $(this).dialog('close'); 
        callback(false); 
       } 
      } 
     }); 

     $('div.multiRowCheckboxMenu').checkboxMenu({ 
      menuItemClick: function(text, count) { 
       $('#confirm-delete-quote').dialog('open'); 
//    return confirm('Are you sure you want to ' + text + ' the selected ' + count + ' quote(s)?'); 
// HOW DO I RETURN WHAT THE USER CLICKED IN THE DIALOG HERE? 
       return callback(); 
      } 
     }); 
    }); 
+0

我不明白你的问题?你需要从comfirn转换到jQuery UI对话框? – Jorge 2012-07-12 20:50:40

回答

0

你已经开始正确的,除了你不能指望有一个返回值。

天然confirm()是阻止脚本。也就是说,执行线程等待用户的输入。这就是为什么你可以返回一个值。

但是,在使用自定义对话框时,您需要将代码随意返回到OkCancel的回调中。

 buttons: { 
      OK: function() { 
       $(this).dialog('close'); 
       callback(true); 

       //You know user clicked true, so do something here itself 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
       callback(false); 

       //Similarly here 
      } 
+0

雅我知道JS是异步的,我的问题是我使用的插件调用函数'menuItemClick',然后提交或阻止提交表单。不知道如何在没有重复该代码的情况下使用它。 clickReturn = opts.menuItemClick.call(this); if(clickReturn){/ * do something * /} – veilig 2012-07-12 21:12:52