当前位置:   article > 正文

HTML多选操作的实现

html多选long类型数据

最近写了一个工作室随机出人为某部门干活的小Demo
处理的过程中也学到了一个新技能:多选操作,主要是前端的实现
这里就简单记录一下
不过学长说我的代码耦合性太强,不宜于维护.......再加油吧

首先是思路,构造思路往往比写代码更占据时间
我首先想到的是那种点击之后可以切换css属性的前端样式
然后就是切换的时候记录对应的所选ID,堆到数组并post给后端

动态css属性

全部都是JQ在带节奏,强大啊

css属性的改变就是在点击之后,JQ选择器固定标签,修改相应的属性
这里为了方便进行选择,我给每个button都赋予带有特征的id
然后使用JQ中的.attr获取相应的class内容
(具体的JQ的各种函数用法可以随意的搜索到)

  1. ...
  2. <a id="select{{name.id}}" onclick="changeSelect({{ name.id }})" >
  3. <button class="btn btn-info btn-xs ">
  4. <i id="changeclass{{ name.id }}" class="glyphicon glyphicon-unchecked"></i>
  5. </button></a>
  6. ...
  7. <script src="/javascripts/application.js" type="text/javascript" charset="utf-8" async defer>
  8. var iclass = $("#changeclass"+id).attr("class");
  9. if (iclass=="glyphicon glyphicon-unchecked"){
  10. $("#changeclass"+id).attr({class:"glyphicon glyphicon-record"});
  11. }
  12. else{
  13. $("#changeclass"+id).attr({class:"glyphicon glyphicon-unchecked"});
  14. }
  15. </script>

多选操作

这里我加了一个提交名单的按钮,然后再js函数中用id=0区别(数据库中没有id为0的数据)
点击之后将数组传递给后端
然后每次unchecked的改变都记录在数组中

  1. ...
  2. <center><a onclick="changeSelect(0)"><button class="btn btn-info btn-md submitNameIds">
  3. <span>提交名单</span>
  4. </button></a></center>
  5. ...
  6. <script src="/javascripts/application.js" type="text/javascript" charset="utf-8" async defer>
  7. nameIds=[];
  8. function changeSelect(id) {
  9. if (id==0) {
  10. if (nameIds.length>0) {
  11. parent.window.location="select/"+nameIds;
  12. }
  13. else{
  14. alert("请选择");
  15. }
  16. }
  17. else{
  18. var iclass = $("#changeclass"+id).attr("class");
  19. if (iclass=="glyphicon glyphicon-unchecked"){
  20. $("#changeclass"+id).attr({class:"glyphicon glyphicon-record"});
  21. nameIds.push(id);
  22. }
  23. else{
  24. $("#changeclass"+id).attr({class:"glyphicon glyphicon-unchecked"});
  25. nameIds.remove(id);
  26. }
  27. }
  28. }
  29. </script>

至于取消选中的操作则是数组的删除固定元素
这里我找了一个网上的remove示例,直接加了进去

  1. //定义数组删除元素
  2. Array.prototype.remove = function(val) {
  3. var index = this.indexOf(val);
  4. if (index > -1) {
  5. this.splice(index, 1);
  6. }
  7. };

效果

后记

这里在实行的过程中,我是受到前面删除确认的影响
在多选操作里面也是用下面这样的操作,和长航学长找bug找了好久....

由于在button属性里使用了onclick,而删除操作里,模态框的确是还有一个确定按钮,确实点击了两次
但是在多选操作里面再直接照搬使用,这里只有一个按钮,就出现了点击两次才会执行css动态执行的效果

  1. $('#clickConfirm').click(function () {
  2. parent.window.location="delete/"+id;
  3. });

这里也证明了一次,onclick和$().click();都会各自捕捉到一次click操作
这是想起来以为大牛说的话:不求甚解是阻碍部分人进步的主要原因

争取做一个Problem Solver而不是Language User吧

转载于:https://www.cnblogs.com/bay1/p/10982443.html

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

闽ICP备14008679号