当前位置:   article > 正文

22/01 Select2 多选框问题_js select2插件 多选选中之后为什么多一次请求

js select2插件 多选选中之后为什么多一次请求


下面两个弹出框, 对应于一个实体的增加, 删除, 二者是通过弹出层框架弹出来的
----------------------------------------------------------------------------------------------------
1). add

 

  1. <div class="control-group" name="entityList" style="display:none" width="100px" >
  2. <label class="control-label">xx列表</label>
  3. <div class="controls">
  4. <select class="select show-tick form-control" multiple name="entities" >
  5. <option value="${code1}" >${name2}</option>
  6. <option value="${code1}" >${name2}</option>
  7. </select>
  8. </div>
  9. </div>



2). update

 

  1. <div class="control-group" name="entityList" style="display:none" >
  2. <label class="control-label">xx列表</label>
  3. <div class="controls">
  4. <select class="select show-tick form-control" multiple name="entities" >
  5. <option value="${code1}" >${name2}</option>
  6. <option value="${code1}" >${name2}</option>
  7. </select>
  8. </div>
  9. </div>





----------------------------------------------------------------------------------------------------


1. 首先最开始是这样, 然后 没有其他的js脚本
出现的问题是 增加的多选框是正确的样式, 然后 更新的多选框样式就变了[少了样式, 变得不够美观, 但是其功能特性还在]

 

 

 


出现问题之后, 我就拿出了文本比较工具, 来比较两个form[包含上面的多选框代码片]的不同之处, 发现二者 没有什么不同的, 然后 做了一些其他的尝试啊[删除掉增加的弹出框中的这个select, 等等]什么的, 都没有见效
然后 找了一下前端的朋友, 来瞅瞅这个问题, 因为 问题比较奇葩, 因此 建议我重新找一个框架, 然后 我也准备重新找一个了, 




2. 但是 今天早上来的时候, 看了一下 昨天的 一篇 Select2 的选择框的demo [http://www.tuicool.com/articles/nYVn22e] 然后 准备按照这个来处理, 
----------------------------------------------------------------------------------------------------
    // 增加脚本处理样式
    $("[name='entities']").select2({tags: true});
----------------------------------------------------------------------------------------------------
然后 我把 "layero.find("[name='entities']").select2({tags: true});" 放在了 xx.js 的顶层[顶层, 还有require.js的导入, 还有其他的弹出层相关业务的处理]
结果 放在这里, 两个 都gg了, 
然后 后来想了一下, 才是 弹出框的相关东西是动态加载加载进来的, 然后 我又放在了 xx.js 的顶层, 然后 当时 dom 中还没有对应的 节点, 因此 找不到, 没有达到预期的效果
然后 我把加载的代码放在了 弹出层的回调的逻辑中了, 这个 问题 差不多就是这样解决了


然后 至于 为什么在情况一的时候 会加载对应的样式呢 ?
弹出之前 根本找不到这个节点啊 ??
xx.js, require 导入了一个 selectInit 的js了, "$('select.select').each(function(){$(this).select2();})", 和这个 有什么关系吗?
为什么 第一个加载了样式, 然后 第二个没有加载对应的样式呢 ?


算了, 奇葩问题 先抛在这里吧, 


对了, 还有一个 小问题, 我在选择框中搜索的时候, 输入了一个 多选框中不存在的选项, 然后 回车了一下, 这个选项居然选中了, 
问题 是在于 这个 tag 选项, tag 文档介绍如下
----------------------------------------------------------------------------------------------------
Tagging support


Select2 can be used to quickly set up fields used for tagging.
Note that when tagging is enabled the user can select from pre-existing options or create a new tag by picking the first choice, which is what the user has typed into the search box so far.
----------------------------------------------------------------------------------------------------


附上部分测试代码

 

 

 

 

 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
  6. <meta name="viewport"
  7. content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui"/>
  8. <meta name="format-detection" content="telephone=no, email=no"/>
  9. <meta name="renderer" content="webkit">
  10. <title>Select2 多选框问题</title>
  11. <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
  12. <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
  13. crossorigin="anonymous">
  14. <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>
  15. <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/>
  16. <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
  17. </head>
  18. <body>
  19. <select name="multiSelect" multiple="multiple" class="form-control">
  20. <optgroup label="系统设置">
  21. <option value="1">用户管理</option>
  22. <option value="2">角色管理</option>
  23. <option value="3">部门管理</option>
  24. <option value="4">菜单管理</option>
  25. </optgroup>
  26. <optgroup label="基础数据">
  27. <option value="9">基础数据维护</option>
  28. </optgroup>
  29. </select>
  30. <hr style="height:1px;border:none;border-top:1px dashed #0066CC;" />
  31. <select name="multiSelect" multiple="multiple" class="form-control">
  32. <option value="1">用户管理</option>
  33. <option value="2">角色管理</option>
  34. <option value="3">部门管理</option>
  35. <option value="4">菜单管理</option>
  36. <option value="9">基础数据维护</option>
  37. </select>
  38. <hr style="height:1px;border:none;border-top:1px dashed #0066CC;" />
  39. <select multiple="multiple" class="select2 show-tick form-control">
  40. <option value="1">用户管理</option>
  41. <option value="2">角色管理</option>
  42. <option value="3">部门管理</option>
  43. <option value="4">菜单管理</option>
  44. <option value="9">基础数据维护</option>
  45. </select>
  46. <script type="text/javascript">
  47. // 渲染所有的 select
  48. // $('select').select2();
  49. // 单独使用配置指定的 节点
  50. $("[name='multiSelect']").select2({
  51. tags: true,
  52. maximumSelectionLength: 3 //最多能够选择的个数
  53. });
  54. </script>
  55. </body>
  56. </html>

 

 



参考链接 :
http://select2.github.io/examples.html
http://www.tuicool.com/articles/nYVn22e
http://www.cnblogs.com/zhansu/p/5817250.html
http://blog.csdn.net/u010265663/article/details/50421858
http://www.cnblogs.com/SHMILYHP/p/6245041.html

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/157495
推荐阅读
相关标签
  

闽ICP备14008679号