jQuery Ajax实现Select多级关联动态绑定数据的实例代码


Posted in jQuery onOctober 26, 2018

jQuery选择插件分为基本版和美化版,重点说下美化版,如下图所示:

jQuery Ajax实现Select多级关联动态绑定数据的实例代码

相比最原始的版本,美化后的选择插件可以说是很漂亮了且功能更加强大(这里不说了,自行发掘吧)。这里主要是添加了它的特有属性并调用 class=”chzn-select”:

jsp页面:

<select class=”chzn-select” id="CODE" name="CODE">
  ......
</select>

js页面:

$(".chzn-select").chosen();

注意引用jQuery的js,有多种版本,建议使用高版本,如 jquery-1.9.1.min.js。

下面进入到主题,select绑定数据是很常见的,但大多数都是静态的或者数据确定的,这些其实都很好处理,我们需要的是动态绑定且多级关联的。

通过下面的实例来看看是如何一步步处理的:

这里我只选择二级关联,更复杂的大家可以在充分掌握后再自行研究。我们要实现的是点击一个select下拉框选择后,另一个select下拉框动态关联其对应的值,如下主select是省份,关联的select是城市,数据库分别存在省份和城市的表,省份表字段有SF_ID和SF_NAME,城市表字段有CY_ID,CY__NAME,CY_SFID(关联的省份ID):

<!-- 省份 -->
<select class="chzn-select" id="ShengFen" name="ShengFen" onChange="setCity();" data-placeholder="请选择省份">
  <option value=""></option>
  <option value="">全部</option>
  <c:foreach items="${sfList}" var="sf">
   <option value="${sf.SF_ID}" <c:if test="${pd.sfId == sf.SF_ID}">selected</c:if>>${sf.SF_NAME} 
   </option>
  </c:foreach>
</select>
<!-- 城市 -->
<select class="chzn-select" id="City" name="City" data-placeholder="请选择城市">
  <option value=""></option>
  <option value="">全部</option>
  <c:foreach items="${cyList}" var="cy">
   <option value="${cy.CY_ID}" <c:if test="${pd.cyId == cy.CY_ID}">selected</c:if>>${cy.CY_NAME} 
   </option>
  </c:foreach>
</select>

这里初始化的时候后台从数据库取数传值到页面,后台使用的是ModeView和PageData,大家视情况而定。

首先给主select省份添加onChange方法,表示选择更改的触发,即省份修改后城市对应的下拉框中的值也要变化,对应的处理方法是setCity(),我们使用ajax的方式来获取数据,如下在js中处理:

//下拉框动态关联
function setCity(){
  // 获取选择的省份的ID
  var sfId = $("#ShengFen").val();
  $.ajax({
   type : "POST",
   url : "SFAndCity/setCity.do",
   data : {"sfId":sfId},
   dataType : "json",
   success : function(data){
     var cyList = data.cyList;
     // 移除以前的绑定数据
     $("#City option").remove();
     // 美化一下select(可以去除)
     var _option = "<option value=\"\"";
     _option += "></option>";
     _option += "<option value=\"\"";
     _option += ">全部</option>";
     // 绑定数据
     if(cfList && cyList.length != 0){
       $("select[name=City]").append(_option);
       for(var i=0;i<cyList.length;i++){
        var option = "<option value=\""+cyList.CY_ID+"\"";
        option += ">"+cyList.CY_NAME+"</option>";
        $("select[name=City]").append(option);
       }
     }else{
       $("select[name=City]").append(_option);
     }
     // 保证jQuery的选择插件动态绑定数据生效
     $("#City").trigger("liszt:updated");
     $("#City").chosen();
   }
  });
}

最后就是后台的处理了,如下:

@RequestMapping(value="/setCity")
@ResponseBody
public Map<String,Object> setCity(){
  Map<String,Object> map = new HashMap<String,Object>();
  PageData pd = new PageData();
  try{
    pd = this.getPageData();
    String sfId = pd.getString("sfId"); //和ajax中传递的保持一致
    pd.put("CY_SFID",sfId);
    List<PageData> cyList = cyService.listCityBysfId(pd);
    map.put("cyList",cyList);  //和ajax中获取的保持一致
    return map;
  }catch(Exception e){
    
  }
  return map;
}

当然,上面关于数据的获取根据自己实际代码来编写,主要是获取数据并返回。

总结

以上所述是小编给大家介绍的jQuery Ajax实现Select多级关联动态绑定数据的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
jQuery实现轮播图效果
Nov 26 jQuery
jQuery实现简单飞机大战
Jul 05 jQuery
jQuery实现简单全选框
Sep 13 jQuery
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
jquery使用FormData实现异步上传文件
Oct 25 #jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 #jQuery
jQuery pagination分页示例详解
Oct 23 #jQuery
jquery.pagination.js分页使用教程
Oct 23 #jQuery
jquery分页插件pagination使用教程
Oct 23 #jQuery
使用jquery Ajax实现上传附件功能
Oct 23 #jQuery
jquery实现动态添加附件功能
Oct 23 #jQuery
You might like
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
js+html制作简单验证码
2017/02/16 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python生成验证码实例
2014/08/21 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
详解python中的异常和文件读写
2021/01/03 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
大学生实习自我鉴定
2013/12/11 职场文书
大学生党课思想汇报
2013/12/29 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
高中生物教学反思
2014/02/05 职场文书
宣传活动总结范文
2014/07/01 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL