layui实现table表格的“关键字搜索”功能

最近在做一个项目里,正好用到了layui的分页。但是在做分页关键字查询时,遇到了几个问题。第一个参数的传递,第二个数据的嗮选,第三个数据的返回,第四个数据的重新加载。

如下是解决方案的js代码,和大家分享。

layui.use('table', function(){
              var table = layui.table;

                table.render({
                    elem: '#demo'
                    ,url:'/demo/table/user/'
                    ,cols: [[
                    {field:'id', width:80, title: 'ID', sort: true}
                      ,{field:'username', width:80, title: '用户名'}
                  ,{field:'sex', width:80, title: '性别', sort: true}
                  ,{field:'city', width:80, title: '城市'}
                  ,{field:'sign', title: '签名', minWidth: 150}
                  ,{field:'experience', width:80, title: '积分', sort: true}
                  ,{field:'score', width:80, title: '评分', sort: true}
                  ,{field:'classify', width:80, title: '职业'}
                  ,{field:'wealth', width:135, title: '财富', sort: true}
                    ]]
                ,page: true
                  });
  
              //监听表格复选框选择
              table.on('checkbox(demo)', function(obj){
                console.log(obj)
              });
              //监听工具条
              table.on('tool(demo)', function(obj){
                var data = obj.data;
                if(obj.event === 'detail'){
                  layer.msg('ID:'+ data.id + ' 的查看操作');
                } else if(obj.event === 'del'){
                  layer.confirm('真的删除行么', function(index){
                    obj.del();
                    layer.close(index);
                  });
                } else if(obj.event === 'edit'){
                  layer.alert('编辑行:<br>'+ JSON.stringify(data))
                }
              });
              
              var $ = layui.$, active = {
                getCheckData: function(){ //获取选中数据
                  var checkStatus = table.checkStatus('idTest')
                  ,data = checkStatus.data;
                  layer.alert(JSON.stringify(data));
                }
                ,getCheckLength: function(){ //获取选中数目
                  var checkStatus = table.checkStatus('idTest')
                  ,data = checkStatus.data;
                  layer.msg('选中了:'+ data.length + ' 个');
                }
                ,isAll: function(){ //验证是否全选
                  var checkStatus = table.checkStatus('idTest');
                  layer.msg(checkStatus.isAll ? '全选': '未全选')
                }
                ,reload:function(){
                    var classifyID= $("#classifyID").val();
                    var title =$("#search-input").val();
                    if(1){
                        console.log(1);
                        table.reload('demo',
                                  {page:
                                          {
                                              curr: 1 //重新从第 1 页开始
                                          }
                                , where: { title: title,classifyID:classifyID}//这里传参  向后台
                                , url: '/demo/table/user/'//后台做模糊搜索接口路径
                                , method: 'get'
                        }); 
                    } 
                }
              };
              
              $('#search_btn').on('click', function(){
                var type = 'reload';
                active[type] ? active[type].call(this) : '';
              });  

});

其中页面上需要一个 button 按钮和一个input。

按钮的id是 search_btn ,input的id是search_input.

reload是实现参数参数,数据返回重新加载的一个函数。

如需了解更多,可参考课程c#建设网站上线了,用到的技术有css,js,layui,c#,sql server,实现的功能有网站的前后台分离。

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
您可以使用layuitable组件提供的搜索功能实现这个功能。您需要先定义一个table实例,用静态数组填充数据,然后调用layuitable.render()将数据渲染到表格中。在render()方法中,您可以使用toolbar属性来定义搜索框,然后在search()方法中实现搜索功能。以下是一个简单的示例代码: HTML代码: ``` <table id="myTable" lay-filter="myTable"></table> ``` JavaScript代码: ``` var data = [ { id: 1, name: '张三', age: 18 }, { id: 2, name: '李四', age: 20 }, { id: 3, name: '王五', age: 22 }, { id: 4, name: '赵六', age: 24 } ]; layui.use('table', function(){ var table = layui.table; // 填充数据 table.render({ elem: '#myTable', data: data, toolbar: '#toolbar', cols: [ [ { field: 'id', title: 'ID', width: 80 }, { field: 'name', title: '姓名', width: 120 }, { field: 'age', title: '年龄', width: 80 } ] ], page: true }); // 搜索功能 table.on('toolbar(myTable)', function(obj){ if(obj.event == 'search'){ var keyword = $('#search').val(); var result = []; for(var i=0; i<data.length; i++){ if(data[i].name.indexOf(keyword) >= 0){ result.push(data[i]); } } table.reload('myTable', { data: result }); } }); }); ``` 在上面的代码中,定义了一个静态数据数组data。在使用table.render()将数据填充到表格中。在cols属性中定义表头,page属性启用分页功能。在toolbar属性中定义了一个搜索框。在table.on()方法中监听工具栏事件,如果点击了“搜索”按钮,就获取搜索关键字,并遍历数据数组,找到包含关键字的项,组成一个新的数组,然后使用table.reload()重新加载表格数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐新帅

希望能帮到你,感谢你的一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值