插入回调函数的方式和位置

时间:2014-02-18 04:55:47

标签: javascript jquery callback

在我的网络应用程序中,在其中一个表单上,我有一个按钮,用户可以单击该按钮从公司目录中查找名称。找到名称后,他们会点击结果,名称和其他目录数据将填充到表单上。至少,这就是我希望它的工作方式。

我的问题是如何正确使用回调函数,以便将查找中的数据恢复到可以将其解析为正确字段的形式。

从表单页面我有以下点击功能:

$(".lookupNameBTN").button({
icons: {primary:"ui-icon-gear"}}) //button
.on("click",function(event){
var btn = $(this).attr("data");

mainApp.lookup(function(obj){
if(btn == "request"){
$("input[name=requestName]").val(obj.cil);
}; //request
if(btn == "client"){
    $("input[name=clientName]").val(obj.cil);
}; //client 
}); //lookup
}); //click

mainApp.lookup()打开对话框并加载服务器文件。

mainApp.lookup = function(callback){

    if($("#lookupDialog").length == 0){
        $("body").append("<div id=\"lookupDialog\" class=\"dialogDivs\" />");
    }; //div exists

$("#lookupDialog").load("/RAMP/cfm/common/lookup.cfm",function(r,s,x){
    if(s == "success"){
        mainApp.lookupDialog = $("#lookupDialog").dialog({
            title: "Corporate Directory",
            modal: true,
            width:600,
            height:450,
            position: {my:"center center", at:"center center", of: "#app"},
            close: function(){
                $("#lookupDialog").dialog("destroy").remove();
            } //close
        }); //dialog    

    }else{ alert("Error in Loading"); 
    } //success

}); //load

}; //mainApp.lookup

最后,在查找弹出窗口中,当用户点击包含结果的表格行时,我有以下内容:

$("#lookupResultsTbl tr").on("click",function(){
var rslt= $(this).attr("data");

// magic goes here to return value

}); //click

一旦有了这个值,我就不清楚如何让它回到回调函数了?

我非常感谢你的帮助。

谢谢, 加里

更新:我添加了Coldfusion标签,因为我的服务器端使用CF9。由于这不是特定于服务器端,我将删除该标记。

我的问题是继续。一个表单页面,我正在调用mainApp.lookup。我想在该函数中提供一个回调函数,该函数返回目录查找中的数据。

load函数完成并返回对话框的html。用户必须通过搜索名称并获取返回的结果来与该对话框进行交互。

我正在寻找一种方法将对话框中的tr click事件中的数据返回到mainApp.lookup函数,然后返回到表单中原始语句中的回调。

1 个答案:

答案 0 :(得分:0)

您应该能够在if(s == "success")代码块中安全地调用回调函数;

mainApp.lookup = function(callback){

    if($("#lookupDialog").length == 0){
        $("body").append("<div id=\"lookupDialog\" class=\"dialogDivs\" />");
    }; //div exists

$("#lookupDialog").load("/RAMP/cfm/common/lookup.cfm",function(r,s,x){
    if(s == "success"){
        callback() // here

        mainApp.lookupDialog = $("#lookupDialog").dialog({
            title: "Corporate Directory",
            modal: true,
            width:600,
            height:450,
            position: {my:"center center", at:"center center", of: "#app"},
            close: function(){
                $("#lookupDialog").dialog("destroy").remove();
            } //close
        }); //dialog    

    }else{ alert("Error in Loading"); 
    } //success

}); //load

}; //mainApp.lookup

..这本身就是标准的jQuery .load()回调函数..所以我希望我能正确理解你的问题!