在我的网络应用程序中,在其中一个表单上,我有一个按钮,用户可以单击该按钮从公司目录中查找名称。找到名称后,他们会点击结果,名称和其他目录数据将填充到表单上。至少,这就是我希望它的工作方式。
我的问题是如何正确使用回调函数,以便将查找中的数据恢复到可以将其解析为正确字段的形式。
从表单页面我有以下点击功能:
$(".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函数,然后返回到表单中原始语句中的回调。
答案 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()回调函数..所以我希望我能正确理解你的问题!