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を返しています。

つまり、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

JavaScriptとしてjQueryモデルボックスを使用することはできません。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 に答える