1

我希望它在 if 条件下检查它。我该如何使用它?

function notification_dialog_box(title,html,icon)
{
    var text = '<p><span class="'+icon+'" style="float:left; margin:0 7px 50px 0;"></span>'+ html  +'</p>';
    var $myDialog = $('<div id="dialog-message"></div>').html(text).dialog({
        modal: true, zIndex: 10000, autoOpen:true,width: 'auto', modal: true, resizable: false,title: title,
        buttons: {
            "OK":function(){$(this).dialog("close"); return true;}, 
            "Cancel":function() {$(this).dialog("close");return false;}
            }
        });
}

if(notification_dialog_box('Out of designer\'s', 'All Designer\'s are assigned in this project', 'ui-icon ui-icon-info' ))
{
code....
}
4

3 回答 3

4

您在asyc 回调中返回 true/false。

:返回真/假的代码在用户单击按钮之前不会运行,但您的代码已经完成运行。

您需要切换到回调结构才能使代码正常工作。

:您需要将一个函数传递给该函数notification_dialog_box,当用户单击一个按钮并传递他们单击的值时会调用该函数。

像这样的东西:

function notification_dialog_box(title,html,icon, fn)
{
    var text = '<p><span class="'+icon+'" style="float:left; margin:0 7px 50px 0;"></span>'+ html  +'</p>';
    var $myDialog = $('<div id="dialog-message"></div>').html(text).dialog({
        modal: true, zIndex: 10000, autoOpen:true,width: 'auto', modal: true, resizable: false,title: title,
        buttons: {
            "OK":function(){$(this).dialog("close"); fn(true);}, 
            "Cancel":function() {$(this).dialog("close"); fn(false);}
            }
        });
}

notification_dialog_box('title', 'blah blah blah', 'ui-icon ui-icon-info', function(ok){
  if(ok) {
     //code
  } 
} )
于 2012-06-13T17:24:54.827 回答
1

您不能将 jQuery 模型框用作 JavaScript,Confirm()即 javascript 不等待用户响应

正确的方法是使用回调函数。

function notification_dialog_box(title, html, icon, success, failure) {
    var text = '<p><span class="' + icon + '" style="float:left; margin:0 7px 50px 0;"></span>' + html + '</p>';
    var $myDialog = $('<div id="dialog-message"></div>').html(text).dialog({
        modal: true,
        zIndex: 10000,
        autoOpen: true,
        width: 'auto',
        modal: true,
        resizable: false,
        title: title,
        buttons: {
            "OK": function() {
                $(this).dialog("close");
                success()
            },
            "Cancel": function() {
                $(this).dialog("close");
                failure()
            }
        }
    });
}

if (notification_dialog_box('Out of designer\'s', 'All Designer\'s are assigned in this project', 'ui-icon ui-icon-info', function() {
    // success code here
}, function() {
    // error code here
}) ​
于 2012-06-13T17:28:43.163 回答
1

你可以做类似的事情

正如@mkoryak 所说,您不能像从异步回调中那样返回。相反,你可以做类似的事情

function notification_dialog_box(title,html,icon,callback)
{
    var text = '<p><span class="'+icon+'" style="float:left; margin:0 7px 50px 0;"></span>'+ html  +'</p>';
    var $myDialog = $('<div id="dialog-message"></div>').html(text).dialog({
        modal: true, zIndex: 10000, autoOpen:true,width: 'auto', modal: true, resizable: false,title: title,
        buttons: {
            "OK":function(){$(this).dialog("close"); callback(true);}, 
            "Cancel":function() {$(this).dialog("close");callback(false);}
            }
        });
}



function dialog_callback(retVal){
    if(retVal)
      // user clicked on Ok
    else
      // clicked on Cancel
}

notification_dialog_box('Out of designer\'s', 
     'All Designer\'s are assigned in this project', 
     'ui-icon ui-icon-info', 
      dialog_callback // pass the callback
);
于 2012-06-13T17:30:41.797 回答