另一种形式的联动框,右边的联动框用jquery生成
这是仿照上篇的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;
}
搞定!
相关推荐:
SEO文案:如何通过巧妙布局提升网站排名,吸引更多流量,娄底网站建设工作文案
自动写文章AI:高效创作工具,开启写作新纪元
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
SEO监控:精准把握网站排名与优化成效的利器,湖南seo排名商家名单
ChatGPT怎么突然不能打开了?你需要了解的原因与解决办法,ai写作有什么问题吗怎么解决
SEO教育:搜索引擎优化,开启成功职业之路,搜狗SEO排名接单
SEO百度优化:让你的品牌在搜索引擎中脱颖而出,日照网站推广策划
用AI写文,开启创作新时代
文章AI生成标题:让创作更轻松,内容更精彩
seo需要了解什么,seo需要学些什么内容 ,ovo ai
AI免费工具:提升效率与创意的秘密武器
SEO优化要钱吗?揭秘SEO投资背后的价值与回报,ai领域
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
目前AI软件有哪些?智能新时代的必备工具
SEO兼职:如何通过SEO兼职实现收入增长与职业突破,濮阳网站建设官网
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
seo项目是什么,seo是啥 ,ai ued
为什么“搜狗不收录”会成为企业SEO的新挑战?,烤肉店的线下营销与推广
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
AI免费生成文章的软件:轻松创作的秘密武器
ChatGPT的梯子:突破网络壁垒,畅享智能对话的全新体验,ai的音标1001ai的音标
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
ChatGPT免登录:轻松畅聊,无需注册,快速体验AI智能助手,眼泪ai
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
ChatGPT的超链接点不开?解决方法一网打尽!,情感ai写作指令是什么
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,助您畅享无障碍智能对话体验,ai记录人
AI人工智能文章生成平台,释放创作无限可能
未来写作新模式文章撰写AI如何助力内容创作
seO经理是什么岗位,seo经理招聘 ,ai写作重复被查
SEO目标:让您的网站轻松登顶搜索引擎,优化购物网站的搜索
ChatGPT支付时银行卡被拒绝?教你几招轻松解决问题!,国内ai换图
未来写作新方式原创AI文章的无限可能
如何用AI改文章,让写作更高效、精准,提升内容质量
SEO查:如何通过精准优化让网站流量飞速增长,吉林推广营销怎么样
ChatGPT网站突然不能用了?如何快速解决这个问题,让你重新畅享AI对话!,ai新建多个画板
WPS改写-轻松提升文档创作效率的秘密武器,推广网站的优势
亚马逊seo是什么公司的,“亚马逊” ,ai玩底特律
ChatGPT怎么打开不了?全方位解决方案!,大庆ai
“爱站”:开启网站优化与流量增长的新纪元,seo入门ppt
什么是seo在线咨询,什么是seo在线咨询服务 ,unreal ai
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
SEO优化全攻略提升网站排名的关键步骤与未来趋势,这是什么新晋动画ai
AI工具汇总网站,让科技为您的工作加速
seo网站反链是什么,网站反链怎么做 ,ai插画头像卡通
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
为什么说seo重要,为什么说seo重要一点 ,中通智能ai是什么意思