jquery怎样实现ajax联动框(二)


Posted in Javascript onMarch 08, 2013

另一种形式的联动框,右边的联动框用jquery生成
jquery怎样实现ajax联动框(二) 
这是仿照上篇的js方法修改的
先看下页面代码:

<tr id="sfqySelect"> 
<td width="100" class="t_r prten field_c">事发区域:</td> 
<td width="131"> 
<select class="building"></select> 
</td> 
<td width="10"></td> 
<td width="131"> 
<input id="choose_floor" class="text_k choose_floor" type="text" value="点击选择楼层"> 
<input class="choose_floor_hidden FL {validate:{required:true}}" type="hidden" name="geoareaid" value=""> 
<div id="floorNum" class='floorNum'></div> 
</td> 
</tr>

页面调用的js:
<script type="text/javascript" src="${rc.contextPath}/js/jquery.building.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("#sfqySelect").building({ 
nodata:"none", 
required:true, 
buildingUrl:'${rc.contextPath}/repair/loadBuildings', 
floorUrl:'${rc.contextPath}/repair/loadFloors', 
clickCallback:function(value,text,other){ 
moveGis(other); 
} 
}); 
}); 
</script>

对应的 jquery.building.js 文件如下:
/* 
Ajax 三级联动 
日期:2013-2-26 
settings 参数说明 
----- 
buildingUrl:大楼下拉数据获取URL,josn返回 
buildingValue:默认大楼下拉value 
floorUrl:楼层数据获取URL,josn返回 
floorValue:默认楼层value 
nodata:无数据状态 
required:必选项 
clickCallback:点击时的回调函数 
------------------------------ */ 
(function($){ 
$.fn.building=function(settings){ 
if($(this).size()<1){return;}; 
// 默认值 
settings=$.extend({ 
buildingUrl:"js/city.min.js", 
floorUrl:"js/city.min.js", 
buildingValue:null, 
floorValue:null, 
nodata:null, 
required:true, 
clickCallback:function(){} 
},settings); 
var box_obj=this; 
var building_obj=box_obj.find(".building"); 
var floor_obj=box_obj.find(".choose_floor"); 
var floorHidden_obj=box_obj.find(".choose_floor_hidden"); 
var floorPanel_obj=box_obj.find("#floorNum"); 
var select_prehtml=(settings.required) ? "" : "<option value=''>请选择</option>"; 
var prepareSelectHtml=function(jsonArray){ 
var temp_html=select_prehtml; 
$.each(jsonArray,function(index,row){ 
temp_html+="<option value='"+row.value+"'>"+row.text+"</option>"; 
}); 
return temp_html; 
}; 
var prepareFloorPanelHtml=function(jsonArray){ 
var temp_html='<table id="floor_table" cellpadding="0" cellspacing="0">'; 
var count=0; 
$.each(jsonArray,function(index,row){ 
if(count==0){ 
temp_html+='<tr>'; 
} 
var otherAttr=""; 
if(row.other){ 
otherAttr="other="+row.other+""; 
} 
temp_html+='<td '+otherAttr+' floorId='+row.value+'>'+row.text+'</td>'; 
if(count>0&&count%3==0){ 
temp_html+='</tr>'; 
count=-1; 
} 
count=count+1; 
}); 
temp_html+='</table>'; 
return temp_html; 
}; 
// 赋值二级下拉框函数 
var createFloorPanel=function(){ 
floor_obj.val('点击选择楼层'); 
floorHidden_obj.val(''); 
//floorPanel_obj.empty(); 
if(building_obj.val()==''){ 
return; 
} 
$.getJSON(settings.floorUrl, { buildingId: building_obj.val(), time: new Date().getTime() }, function(jsonResult){ 
if(!jsonResult.success){ 
if(settings.nodata=="none"){ 
floorPanel_obj.css("display","none"); 
}else if(settings.nodata=="hidden"){ 
floorPanel_obj.css("visibility","hidden"); 
}; 
return; 
} 
// 遍历赋值二级下拉列表 
floorPanel_obj.html(prepareFloorPanelHtml(jsonResult.data)); 
floorPanel_obj.find('td').click(function(){ 
//hide 
var text = $(this).html(); 
var value = $(this).attr("floorId"); 
var other =$(this).attr("other"); 
floor_obj.val(text); 
floorHidden_obj.val(value); 
floorPanel_obj.css("display","none"); 
settings.clickCallback(value,text,other); 
}); 
/*$('body').filter('.choose_floor').click(function(){ 
alert(1) 
floorPanel_obj.css("display","none"); 
}); */ 
}); }; 
var init=function(){ 
// 遍历赋值一级下拉列表 
$.getJSON(settings.buildingUrl, {time: new Date().getTime() }, function(jsonResult){ 
if(!jsonResult.success){ 
return; 
} 
// 遍历赋值一级下拉列表 
building_obj.html(prepareSelectHtml(jsonResult.data)); 
createFloorPanel(); 
// 若有传入大楼与楼层的值,则选中。(setTimeout为兼容IE6而设置) 
setTimeout(function(){ 
if(settings.buildingValue && settings.buildingValue.length>0){ 
building_obj.val(settings.buildingValue); 
createFloorPanel(); 
setTimeout(function(){ 
if(settings.floorValue!=null){ 
floor_obj.val(settings.floorValue); 
}; 
},1); 
}; 
},1); 
}); 
// 选择一级时发生事件 
building_obj.bind("change",function(){ 
createFloorPanel(); 
}); 
floor_obj.click(function(){ 
//show 
//alert(floorPanel_obj.html()) 
//floorPanel_obj.css("height","100px"); 
//floorPanel_obj.css("width","100px"); 
//floorPanel_obj.css('floorNum'); 
floorPanel_obj.css("display","block"); 
}); 
}; 
// 初始化第一个下拉框 
init(); 
}; 
})(jQuery);

后台处理请求及返回json数据:
@RequestMapping("loadBuildings") 
@ResponseBody 
public Map<String, Object> loadBuildings(ModelMap model){ 
String msg = ""; 
boolean isSuccess = false; 
List<Map<String, String>> maps=new ArrayList<Map<String,String>>(); 
try { 
List<GeoArea> buildings= geoAreaService.findBuildings(); 
for (GeoArea building : buildings) { 
Map<String,String> map=new HashMap<String, String>(); 
map.put("value", building.getId().toString()); 
map.put("text", building.getName()); 
maps.add(map); 
} 
msg = "查找大楼成功。"; 
isSuccess=true; 
} catch (Exception e) { 
msg = "查找大楼失败。"; 
log.error("查找大楼失败:" + e.getMessage(), e); 
} 
return buildAjaxResult(isSuccess, msg,maps); 
} 
@RequestMapping("loadFloors") 
@ResponseBody 
public Map<String, Object> loadFloors(@RequestParam("buildingId")Integer buildingId,ModelMap model){ 
String msg = ""; 
boolean isSuccess = false; 
List<Map<String, String>> maps=new ArrayList<Map<String,String>>(); 
try { 
List<GeoArea> floors= geoAreaService.findFloorById(buildingId); 
for (GeoArea floor : floors) { 
Map<String,String> map=new HashMap<String, String>(); 
map.put("value", floor.getId().toString()); 
map.put("text", floor.getName()); 
map.put("other", floor.getCode()); 
maps.add(map); 
} 
msg = "查找楼层成功。"; 
isSuccess=true; 
} catch (Exception e) { 
msg = "查找楼层失败。"; 
log.error("查找楼层失败:" + e.getMessage(), e); 
} 
return buildAjaxResult(isSuccess, msg,maps); 
} 
protected Map<String, Object> buildAjaxResult(boolean isSuccess, String msg, Object data) { 
Map<String, Object> resultMap = new HashMap<String, Object>(); 
resultMap.put("success", isSuccess); 
resultMap.put("msg", msg); 
resultMap.put("data", data); 
return resultMap; 
}

搞定!
Javascript 相关文章推荐
JavaScript Array扩展实现代码
Oct 14 Javascript
Javascript玩转继承(三)
May 08 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
功能强大的Bootstrap效果展示(二)
Aug 03 Javascript
JS比较两个数值的大小实例
Nov 25 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
JS 实现获取验证码 倒计时功能
Oct 29 Javascript
javascript原型链学习记录之继承实现方式分析
May 01 Javascript
jquery怎样实现ajax联动框(一)
Mar 08 #Javascript
实现点击列表弹出列表索引的两种方式
Mar 08 #Javascript
很好用的js日历算法详细代码
Mar 07 #Javascript
Javascript查询DBpedia小应用实例学习
Mar 07 #Javascript
JS链式调用的实现方法
Mar 07 #Javascript
jQuery滚动加载图片效果的实现
Mar 06 #Javascript
HTML上传控件取消选择
Mar 06 #Javascript
You might like
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
回顾Javascript React基础
2019/06/15 Javascript
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python list与NumPy array 区分详解
2019/11/06 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
2015年母亲节寄语
2015/03/23 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
寒假生活随笔
2015/08/15 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书