easyUI实现类似搜索框关键词自动提示功能示例代码


Posted in Javascript onDecember 27, 2016

在一个DataGrid里面,搜索行所在位置

实现的效果如下:

easyUI实现类似搜索框关键词自动提示功能示例代码

在搜索框中输入部分列名关键字,即可匹配到行的位置。

EasyUI的SearchBox组件只提供了静态搜索框,我们可以使用ComboBox来实现动态的自动关键匹配效果,并且不需要加载远程数据。当前页面的DataGrid的数据我们可以直接在本地获取之。

代码如下:

setp1、创建combobox

<div style="text-align: left;background-color: #E0ECFF;padding-left: 10px;padding-top: 5px;"> 
  <div id="searchField" style="width:250px"></div> 
</div>

step2、实现本地数据加载

$("#searchField").combobox({ 
  loader: function(param,success,error){ 
    //获取输入的值 
    var q = param.q || ""; 
    //此处q的length代表输入多少个字符后开始查询 
    if(q.length <= 0) return false; 
    var rows = $('#fieldList').datagrid('getRows'); 
    var items = $.map(rows, function (item, index) { 
      //匹配条件,忽略大小写 
      if(item.fieldName && (item.fieldName.toLowerCase().indexOf(q.toLowerCase()) != -1)){ 
        return { 
          "fieldName": item.fieldName 
        }; 
      } 
    }); 
    success(items); 
  }, 
  onBeforeLoad:function () { 
    //设置placeholder 
    $("input[class='textbox-text validatebox-text textbox-prompt']").attr("placeholder","输入标注字段,定位所在行"); 
  }, 
  mode: 'remote', 
  textField:'fieldName', 
  valueField:'fieldName', 
  onSelect : function(record){ 
    var $filedList = $('#fieldList'); 
    var rows = $filedList.datagrid('getRows'); 
    if(rows && rows.length > 0){ 
      for(var r = 0 ; r < rows.length ; r++){ 
        if(rows[r].fieldName == record.fieldName){ 
          $filedList.datagrid('selectRow',r); 
          break; 
        } 
      } 
    } 
  } 
});

load是一个适配器,它将本地数据转换成combobox所需的数据格式:

var rows = $('#fieldList').datagrid('getRows'); 
var items = $.map(rows, function (item, index) { 
  //匹配条件,忽略大小写 
  if(item.fieldName && (item.fieldName.toLowerCase().indexOf(q.toLowerCase()) != -1)){ 
    return { 
      "fieldName": item.fieldName 
    }; 
  } 
});

首先我们通过datagrid的getRows方法获取当前数据表的所有行,然后通过map转换。

success(items);

到此就完成了数据的转换

step3、实现行的选中

onSelect : function(record){ 
    var $filedList = $('#fieldList'); 
    var rows = $filedList.datagrid('getRows'); 
    if(rows && rows.length > 0){ 
      for(var r = 0 ; r < rows.length ; r++){ 
        if(rows[r].fieldName == record.fieldName){ 
          $filedList.datagrid('selectRow',r); 
          break; 
        } 
      } 
    } 
  }

在onSelect事件中,匹配所在行调用selectRow即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery中children()方法用法实例
Jan 07 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 Javascript
DWR中各种java方法的调用
May 04 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
JS实现点击按钮可实现编辑功能
Jul 03 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
解决ele ui 表格表头太长问题的实现
Nov 13 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 #Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 #Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
Dec 27 #Javascript
TypeScript学习之强制类型的转换
Dec 27 #Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 #Javascript
详解js的六大数据类型
Dec 27 #Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 #Javascript
You might like
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
python查看模块安装位置的方法
2018/10/16 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
如何利用Python 进行边缘检测
2020/10/14 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
新电JAVA笔试题目
2014/08/31 面试题
成绩单公证书
2014/04/10 职场文书
节水倡议书范文
2014/04/15 职场文书
我的祖国演讲稿
2014/05/04 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
《搭石》教学反思
2016/02/18 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python