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 相关文章推荐
破除一些网站复制、右键限制
Nov 04 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
js function定义函数的几种不错方法
Feb 27 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
基于Vue.js实现简单搜索框
Mar 26 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
详解package.json版本号规则
Aug 01 Javascript
解决layui laydate 时间控件一闪而过的问题
Sep 28 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
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
Jquery中dialog属性小记
2010/09/03 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
jquery操作select大全
2014/04/25 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
python正则表达式面试题解答
2020/04/28 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
体育教师自我鉴定
2014/02/12 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
财务科科长岗位职责
2014/03/10 职场文书
防沙治沙典型材料
2014/05/07 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
党纪处分决定书
2015/06/24 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android