• jquery sortable 提交数据保存 使用问题


    最终效果图

    有几个坑这里分享一下。

    我用的是cloud-admin,一个bootstrap的CSS模板。

    jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license */
    
    jQuery UI - v1.11.1 - 2014-08-24

    jquery 的sort 功能是在ui包里面的,所以需要UI包引入

    一开始引入页面没效果,新建一个单独的页面正常使用,又放入完整页面又正常了,真不知道什么情况。反复试一下应该是没问题的。

    试了以为是 ol 标签有问题,换 ul 好了又换回 ol 一切正常。

    1 <div>
    2                                             <ol class="dd-list" id="checkList">
    3                                             <c:forEach items="${checkList}" var="item">
    4                                                 <li id="${item.fieldName}">
    5                                                     <span  class="btn btn-default">${item.chineseName}</span>
    6                                                 </li>
    7                                             </c:forEach>
    8                                             </ol>
    9                                         </div>

    2个候选框,一个是已选择的,另外一个是未选择的,可以互相拖拽,这个地方用到 sortable  connectWith属性

    $("#uncheckList").sortable({
            connectWith:"#checkList"
      }).disableSelection();

    只提交已选择那个DIV里的项目保存到数据库。

    这里的  sortable("toArray")  功能,需要注意一下,出来是个 以 , (逗号) 隔开的字符串,内容就是 li 属性 id 的内容。

    而且出来的是按顺序排列的一串。如下图。

    id="${item.fieldName}"

          

        但你直接通过ajax post是不行的,需要decodeURIComponent一下才能在服务器端正常获取到。剩下的就没什么问题。很 好用的一个功能。

    checklist=decodeURIComponent(checklist,true);

     这里有个stop事件,需要注意的是,当是 connectWith 情况下,stop 需要修改为 update 才可以。这个问题一开始没发现,在测试时候发现了。

     1 <script>
     2 var typeId=${param.type};
     3   $(function() {
     4     $("#checkList").sortable({
     5           connectWith:"#uncheckList",
     6           delay:1,
     7           stop:function(){
     8               var checklist=$("#checkList").sortable("toArray");
     9               checklist=decodeURIComponent(checklist,true);
    10               $.post("/sequence.json",{value:checklist,type:typeId});  
    11           }
    12     }).disableSelection();
    13     
    14     $("#uncheckList").sortable({
    15          connectWith:"#checkList"
    16     }).disableSelection();
    17   });
    18 </script>
     1     @ResponseBody
     2     @RequestMapping(value="/sequence",method=RequestMethod.POST)
     3     public Integer updateSequence(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
     4         Integer classify = getClassify(request);
     5         String value=this.getValue(request, "value");
     6         super.logParam(request);
     7         String[] attrs=StringUtils.split(value,",");
     8         List<CustomColumn> cclist=new ArrayList<CustomColumn>();
     9         for(int sequence=0,len=attrs.length;sequence<len;sequence++){
    10             CustomColumn cc=new CustomColumn();
    11             cc.setClassify(classify);
    12             cc.setFieldName(attrs[sequence]);
    13             cc.setSequence(sequence);
    14             cclist.add(cc);
    15         }
    16         manager.savePointListCustomColumns(cclist, this.getCompanyId(request),classify);
    17         return 1;
    18     }

    完美。

  • 相关阅读:
    Mysql的ONLY_FULL_GROUP_BY
    Redis报错“ OOM command not allowed when used memory > 'maxmemory' ”
    redis发布订阅客户端报错
    使用IDEA远程调试SpringBoot程序
    kafk学习笔记(一)
    Ubuntu中卸载node和npm并重装
    一些常用的类型转换
    一台电脑配置多个GigHub账号
    百度网盘文件直接下载方法(跳过每次需要启动百度网盘下载的方式)
    如何激活IDEA工具,亲测有效
  • 原文地址:https://www.cnblogs.com/nanahome/p/9195768.html
Copyright © 2020-2023  润新知