前段页面搜索功能实现

前段页面获取到了后台段数据,搜索功能就不用后台了,直接就把获得段数据中查询。如果要查询其他不是获取当前段数据,那么还需要和后台交互。

html代码只有一个select框。这个数据是后台给出的数据 

          <select class="chosen-select" onchange="query(this.value)">
                        <option value="0">${_res.get("laoshixingming")}</option>
                        <c:forEach items="${list}" var="v">
                            <option value="${v.title}">${v.title}</option>
                        </c:forEach>
                    </select>
       这里页面显示,显示所有的数据,进入这个页面的时候就显示。这里可以改为使用js加载显示数据的

           <tbody id="tbody">
            <c:forEach items="${list}" var="v">
                <tr>
                    <td>${v.title}</td>
                    <td>
                        <fmt:formatDate value="${v.start}" pattern="HH:mm:ss"></fmt:formatDate>
                        -
                        <fmt:formatDate value="${v.end}" pattern="HH:mm:ss"></fmt:formatDate>
                    </td>
                </tr>
            </c:forEach>
            </tbody>
<script type="text/javascript" id="searchText">  //这里的userTimes的数据是和初始化加载显示的页面数据一样的, 就是上边的  ${list}  jstl 认识对象集合     //js不认识 所以这里在后台把list转化为了jsonObject    JSONObject.toJSON(userTimes)
var list = ${userTimes};
function query(name) {        var html = "";        list.forEach(function (v, index, arr) {            /*选择了老师后的搜索*/            if(name == v.title){            html += "<tr>" +                "    <td>" + v.title + "</td>" +                "    <td>" +                format(v.start) +                "    -" +                format(v.end) +                "    </td>" +                "    </tr>";            }

            /*初始化的时候的数据*/            if(name == ‘0‘){            html += "<tr>" +                "    <td>" + v.title + "</td>" +                "    <td>" +                format(v.start) +                "    -" +                format(v.end) +                "    </td>" +                "    </tr>";            }

            console.log(html)            $("#tbody").html(html);        //搜索显示数据后,如果老师名称一样,还是使用下边的合并单元格方法            uniteTable("tb",1);        })    }

    function format(myDate) {        if(myDate != null){            //有值,不是空2019-01-01 10:00:00            return new Date(myDate).format("hh:mm:ss");        }        return myDate;    }

    /**     *  格式化时间的,网上复制的     * @param fmt  yyyy-MM-dd hh:mm:ss   格式就是下边的,小时一般大写,这里小写。     * @returns {*}     * 如果是unix时间,那么 new Date(unixTime).format("hh:mm:ss") ====>> 12:00:00     */    Date.prototype.format = function(fmt) {        var o = {            "M+" : this.getMonth()+1,                 //月份            "d+" : this.getDate(),                    //日            "h+" : this.getHours(),                   //小时            "m+" : this.getMinutes(),                 //分            "s+" : this.getSeconds(),                 //秒            "q+" : Math.floor((this.getMonth()+3)/3), //季度            "S"  : this.getMilliseconds()             //毫秒        };        if(/(y+)/.test(fmt)) {            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));        }        for(var k in o) {            if(new RegExp("("+ k +")").test(fmt)){                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));            }        }        return fmt;    }

 //合并挨着的表格的数据, //老师名字一样就合并了后台只需要按照老师名称排序就行,把来时名称一样的放到一块
function uniteTable(tableId,colLength) {    //colLength-- 需要合并单元格的列1开始    var tb=document.getElementById(tableId);

    tb.style.display=‘‘;

    var i = 0;    var j = 0;

    var rowCount = tb.rows.length; //   行数    var colCount = tb.rows[0].cells.length; //   列数

    var obj1 = null;    var obj2 = null;    var obj3 = null;

    //为每个单元格命名    for (i = 0; i < rowCount; i++) {        for (j = 0; j < colCount; j++) {            tb.rows[i].cells[j].id = "tb__" + i.toString() + "_" + j.toString();        }    }

    //合并行  (列循环)第一行第一列均从0开始    for (i = 0; i < colCount; i++) {

        //如果第3,4,5列不进行合并操作        if (i == 2 || i == 3 || i == 4) continue;        obj1 = document.getElementById("tb__0_" + i.toString())        //(行循环)        for (j = 1; j < rowCount; j++) {            obj2 = document.getElementById("tb__" + j.toString() + "_" + i.toString());

            if(i == 0){         //第1列全部进行合并操作                if (obj1.innerText == obj2.innerText) {     //判断值是否相等                    obj1.rowSpan++;                         //合并行                    obj2.parentNode.removeChild(obj2);      //移除被合并的行                } else {                    obj1 = document.getElementById("tb__" + j.toString() + "_" + i.toString());                }            }else if(i == 5){   //第6列合并操作参照第2列,第二列合并了,第5列才进行合并                obj3 = document.getElementById("tb__" + j.toString() + "_" + (i-4).toString());                if (obj1.innerText == obj2.innerText && obj3 == null) {                    obj1.rowSpan++;                    obj2.parentNode.removeChild(obj2);                } else {                    obj1 = document.getElementById("tb__" + j.toString() + "_" + i.toString());                }            }else{              //只有前一列进行了合并操作后面的才会进行合并操作                obj3 = document.getElementById("tb__" + j.toString() + "_" + (i-1).toString());                if (obj1.innerText == obj2.innerText && obj3 == null) {                    obj1.rowSpan++;                    obj2.parentNode.removeChild(obj2);                } else {                    obj1 = document.getElementById("tb__" + j.toString() + "_" + i.toString());                }            }        }    }}
</script>


原文地址:https://www.cnblogs.com/renjianjun/p/10584138.html

时间: 2024-11-11 14:57:42

前段页面搜索功能实现的相关文章

ASP.NET MVC页面搜索功能实现(普通方法和使用Ajax)

使用以下方法可以对数据进行过滤再在页面中显示 假设当前数据库.控制器和视图都已创建 模型名为Movies 控制名为MoviesController 显示页面的视图名为Index 数据库上下文为MovieDBContext 一.     在显示页面添加搜索功能(普通) 1.         在显示页面的视图中(即Index.cshtml)加入一个搜索表单 @using (Html.BeginForm("Index", "Movies", FormMethod.Get)

java读取某个目录下所有文件并通过el表达式将相关文件信息展示出来,js提供页面搜索及查看下载功能

从服务器上读取某个目录下的文件  将文件名 文件修改日期   及文件 大小展示在前台  并可以查看及下载 第一步:读取文件目录下的文件,并将文件按时间由大到小排列 public ArrayList<File> getLogs() { // TODO Auto-generated method stub ArrayList<File>  tomcatLogs = new ArrayList<File>(); File path = new File(""

Yii 1开发日记 ----------- 搜索功能及Checkbox的实现

用yii 1实现后台的搜索功能,效果如下图: 1.模型中: 1 public function search() 2 { 3 4 $criteria = new CDbCriteria; 5 //独立高级搜索 6 if(isset( $_GET['goods']) ) { 7 //商品货号 8 if (isset($_GET['goods']['goods_sn']) && $_GET['goods']['goods_sn'] != "") 9 { 10 $criter

ThinkPHP之中getlist方法实现数据搜索功能

自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like  %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句之中: HTML之中: 1 <form action="" method="get"> 2 <table class="account_table" width="100%" cellpadding="

Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/12684155 前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了,过完国庆到新公司报道,感觉还不错,就是现在住的地方离新公司有点远,地铁20站,伤不起啊,我每天早上7点多就要起床,然后屁颠屁颠的去挤地铁上班,晚上下班还要挤地铁,先不说路程远,车费一天就要10几块,我的银子啊,有坐龙华线去上班的深圳程序员不?听说那条线上班高峰期很挤?我没在上班高峰期坐过那趟车,我

利用solr实现商品的搜索功能

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引.搜索性能进行了优化. Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务.有效降低频繁访问数据库对数据库造成的压力. 第一步:将solr部署在linux系统下. 第二步:solrJ是solr的客户端,使用它需要依赖solrJ的jar包. 第三步:将数据库的内容添加到solr的索引库,这样查询就在索

django的前后的结合,search搜索功能案例

利用django的Q()功能可以很好的展开搜索功能 假设我要做个这样的搜索功能 那么思路是怎么样的? 前端获取 -->输入 -->ajax后台获取 -->进行搜索 -->将值返回后台 --->ajax在进行处理传到页面 那我们就来看看代码 前端的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti

sharepoint foundation 2013升级sp1补丁后无法使用搜索功能

直接安装了sharepoint foundation 2013 with sp1后,发现新建的站点都没有默认的搜索框. 具体报错特征: 1.添加搜索框 web part,保存页面后报错"公共语言运行时检测到无效的程序" 2.当时想了另外一种方法,在网站集下新建搜索中心网站.这个时候会有2个选择,2010样式和2013样式.当使用2010样式的时候,尽然成功进入页面,并实现搜索功能.而使用2013样式,或者从2010样式升级到2013样式后,页面报错"Web 部件维护网页: 如

Android搜索功能的案例,本地保存搜索历史记录......

开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示:  本案例实现起来很简单,所以可以直接拿来嵌入项目中使用,涉及到的知识点: - 数据库的增删改查操作 - ListView和ScrollView的嵌套冲突解决 - 监听软键盘回车按钮设置为搜索按钮 - 使用TextWatcher( )实时筛选 - 已搜索的关键字再次搜索不重复添加到数据库 - 刚进入页面设置软键盘不因为EditText而自动弹出 代码