jquery怎样实现ajax联动框(一)
jquery怎样实现ajax联动框(一)
发布时间:2017-01-14 来源:查字典编辑
摘要:前台页面复制代码代码如下:$(document).ready(function(){$("#rwflSelect").linkSelect(...

前台页面

复制代码 代码如下:

<script type="text/javascript" src="${rc.contextPath}/js/jquery.select.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$("#rwflSelect").linkSelect({

nodata:"none",

required:true,

firstUrl:'${rc.contextPath}/repair/loadCategory',

secondUrl:'${rc.contextPath}/repair/loadSubCategory',

firstValue:'$!{repair.categoryid}',//任务大类

secondValue:'$!{repair.subcategoryid}'//人物小类

});

});

</script>

<tr id="rwflSelect">

<td width="100">任务分类:</td>

<td width="131"><select name='categoryid'></select> </td>

<td width="10"></td>

<td width="131"><select name="subcategoryid" disabled="disabled"></select></td>

</tr>

jquery.select.js

复制代码 代码如下:

/*

Ajax 三级联动

日期:2013-2-26

settings 参数说明

-----

firstUrl:一级下拉数据获取URL,josn返回

firstValue:默认一级下拉value

secondUrl:二级下拉数据获取URL,josn返回

secondValue:默认二级下拉value

thirdUrl:三级下拉数据获取URL,josn返回

thirdValue:默认三级下拉value

nodata:无数据状态

required:必选项

------------------------------ */

(function($){

$.fn.linkSelect=function(settings){

if($(this).size()<1){return;};

// 默认值

settings=$.extend({

firstUrl:"js/city.min.js",

firstValue:null,

secondValue:null,

thirdValue:null,

nodata:null,

required:true

},settings);

var box_obj=this;

var first_obj=box_obj.find(".first");

var second_obj=box_obj.find(".second");

var third_obj=box_obj.find(".third");

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 secondStart=function(){

second_obj.empty().attr("disabled",true);

third_obj.empty().attr("disabled",true);

if(first_obj.val()==''){

return;

}

$.getJSON(settings.secondUrl, { firstValue: first_obj.val(), time: new Date().getTime() }, function(jsonResult){

if(!jsonResult.success){

if(settings.nodata=="none"){

second_obj.css("display","none");

third_obj.css("display","none");

}else if(settings.nodata=="hidden"){

second_obj.css("visibility","hidden");

third_obj.css("visibility","hidden");

};

return;

}

// 遍历赋值二级下拉列表

second_obj.html(prepareSelectHtml(jsonResult.data)).attr("disabled",false).css({"display":"","visibility":""});

thirdStart();

});

};

// 赋值三级下拉框函数

var thirdStart=function(){

third_obj.empty().attr("disabled",true);

$.getJSON(settings.thirdUrl, { firstValue: first_obj.val(),secondValue:second_obj.val(), time: new Date().getTime() }, function(jsonResult){

if(!jsonResult.success){

if(settings.nodata=="none"){

third_obj.css("display","none");

}else if(settings.nodata=="hidden"){

third_obj.css("visibility","hidden");

};

return;

}

// 遍历赋值三级下拉列表

third_obj.html(prepareSelectHtml(jsonResult.data)).attr("disabled",false).css({"display":"","visibility":""});

thirdStart();

});

};

var init=function(){

// 遍历赋值一级下拉列表

$.getJSON(settings.firstUrl, {time: new Date().getTime() }, function(jsonResult){

if(!jsonResult.success){

return;

}

// 遍历赋值一级下拉列表

first_obj.html(prepareSelectHtml(jsonResult.data));

secondStart();

// 若有传入一级与二级的值,则选中。(setTimeout为兼容IE6而设置)

setTimeout(function(){

if(settings.firstValue && settings.firstValue.length>0){

first_obj.val(settings.firstValue);

secondStart();

setTimeout(function(){

if(settings.secondValue && settings.secondValue.length>0){

second_obj.val(settings.secondValue);

thirdStart();

setTimeout(function(){

if(settings.thirdValue && settings.thirdValue.length>0){

third_obj.val(settings.thirdValue);

};

},1);

};

},1);

};

},1);

});

// 选择一级时发生事件

first_obj.bind("change",function(){

secondStart();

});

// 选择二级时发生事件

second_obj.bind("change",function(){

thirdStart();

});

};

// 初始化第一个下拉框

init();

};

})(jQuery);

${rc.contextPath}/repair/loadCategory 对应的后台方法及返回json值:

复制代码 代码如下:

@RequestMapping("loadCategory")

@ResponseBody

public Map<String, Object> loadCategory(ModelMap model){

String msg = "";

boolean isSuccess = false;

List<Map<String, String>> maps=new ArrayList<Map<String,String>>();

try {

List<Category> categories= categoryService.findAllCategory();

for (Category category : categories) {

Map<String,String> map=new HashMap<String, String>();

map.put("value", category.getId().toString());

map.put("text", category.getCategoryName());

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;

}

效果如图:

jquery怎样实现ajax联动框(一)1

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类