jQuery中的ui-dialog回调函数参数问题。

悬赏:25 发布时间:2008-08-07 提问人:retow (初级程序员)

1.问题背景:
我想用ui-dialog来代替window.confirm.
window.confirm点击确定会返回一个值。但是ui-dialog不行,只能通过回调函数来达到目的。
2.目标:
点击ui-dialog中确定按钮要完成:关闭ui-dialog.执行回调函数
3.代替confirm的代码:
var MyUtil={};

//--_message是要显示的信息,callback是点击确定按钮以后要执行的回调函数
//
HUtil.confirm=function(_message,callback) {
    var dialogId="alert_abcdef";

    $("#"+dialogId,document).get(0).innerHTML=_message;
    
    $("#"+dialogId,document).dialog({
       modal: true,
       buttons: {
            "确定": function(){
                    callback();//这里肯定不对!!!!!
                    $(this).dialog("close");
        },
            "取消": function(){
                 $(this).dialog("close");
            }
      }
    });    
}



4.调用MyUtil.confirm的代码:
/**删除**/
function deleteData(){
    var ids="1";
        ///-------------回调函数有参数!!!
    MUtil.confirm("你确认要删除选中的数据?",function(ids){deleteCallback(ids)});   
}   
/**删除的回调函数,作用是提交到后台**/
function deleteCallback(ids){

   var sAction = "/dict.do?method=delete&ids="+ids;
   document.forms[0].action=sAction;
   
   document.forms[0].submit();
}

5。问题:
在Action中得到ids是"undefined",而实际想得到的是1

采纳的答案

2008-08-08 passyt (初级程序员)

var MyUtil={};

//--_message是要显示的信息,callback是点击确定按钮以后要执行的回调函数
//
HUtil.confirm=function(_message,callback) {
    var dialogId="alert_abcdef";

    $("#"+dialogId,document).get(0).innerHTML=_message;
    
    $("#"+dialogId,document).dialog({
       modal: true,
       buttons: {
            "确定": function(){
                    callback();//这里肯定不对!!!!!
                    $(this).dialog("close");
        },
            "取消": function(){
                 $(this).dialog("close");
            }
      }
    });    
}

修改为
var MyUtil={};

//--_message是要显示的信息,callback是点击确定按钮以后要执行的回调函数
//
HUtil.confirm=function(_message,callback) {
    var dialogId="alert_abcdef";

    $("#"+dialogId,document).get(0).innerHTML=_message;
    
    $("#"+dialogId,document).dialog({
       modal: true,
       buttons: {
            "确定": function(){
                    callback.call();
                    $(this).dialog("close");
        },
            "取消": function(){
                 $(this).dialog("close");
            }
      }
    });    
}

/**删除**/
function deleteData(){
    var ids="1";
        ///-------------回调函数有参数!!!
    MUtil.confirm("你确认要删除选中的数据?",function(ids){deleteCallback(ids)});   
}

修改为
/**删除**/
function deleteData(){
    var ids="1";
        ///-------------回调函数有参数!!!
    MUtil.confirm("你确认要删除选中的数据?",function(){deleteCallback(ids)});   
}

提问者对于答案的评价:
多谢,问题解决