zoukankan      html  css  js  c++  java
  • HTML多选操作的实现

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

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

    动态css属性

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

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

    ...
    <a id="select{{name.id}}" onclick="changeSelect({{ name.id }})" >
    <button class="btn btn-info btn-xs ">
    <i id="changeclass{{ name.id }}" class="glyphicon glyphicon-unchecked"></i>
    </button></a>
    ...
    <script src="/javascripts/application.js" type="text/javascript" charset="utf-8" async defer>
    var iclass = $("#changeclass"+id).attr("class");
    if (iclass=="glyphicon glyphicon-unchecked"){
    	$("#changeclass"+id).attr({class:"glyphicon glyphicon-record"});
    		}
    else{
    	$("#changeclass"+id).attr({class:"glyphicon glyphicon-unchecked"});
    }
    </script>
    

    多选操作

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

    ...
    <center><a onclick="changeSelect(0)"><button class="btn btn-info btn-md submitNameIds">
    	<span>提交名单</span>
    </button></a></center>
    ...
    <script src="/javascripts/application.js" type="text/javascript" charset="utf-8" async defer>
    nameIds=[];
    function changeSelect(id) {
    	if (id==0) {
    		if (nameIds.length>0) {
    			parent.window.location="select/"+nameIds;
    		}
    		else{
    			alert("请选择");
    		}
    	}
    	else{
    		var iclass = $("#changeclass"+id).attr("class");
    		if (iclass=="glyphicon glyphicon-unchecked"){
    			$("#changeclass"+id).attr({class:"glyphicon glyphicon-record"});
    			nameIds.push(id);
    		}
    		else{
    			$("#changeclass"+id).attr({class:"glyphicon glyphicon-unchecked"});
    			nameIds.remove(id);
    		}
    	}
    }
    </script>
    

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

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

    效果

    后记

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

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

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

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

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

  • 相关阅读:
    c语言博客作业04--数组
    C博客作业03--函数
    c博客作业02--循环结构
    C博客作业01--顺序分支结构
    我的第一篇博客
    java--购物车程序的面向对象设计
    c博客作业05--指针
    C博客作业04--数组
    C博客作业03--函数
    C博客作业02--循环结构
  • 原文地址:https://www.cnblogs.com/bay1/p/10982443.html
Copyright © 2011-2022 走看看