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 相关文章推荐
javascript代码运行不出来执行错误的可能情况整理
Oct 18 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
提升jQuery的性能需要做好七件事
Jan 11 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
JS获取及验证开始结束日期的方法
Aug 20 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
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
第五节--克隆
2006/11/16 PHP
php不写闭合标签的好处
2014/03/04 PHP
php上传图片类及用法示例
2016/05/11 PHP
一段实用的php验证码函数
2016/05/19 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
vue兄弟组件传递数据的实例
2018/09/06 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
Python中的rjust()方法使用详解
2015/05/19 Python
python中管道用法入门实例
2015/06/04 Python
Python爬取三国演义的实现方法
2016/09/12 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Python算法中的时间复杂度问题
2019/11/19 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
如何把python项目部署到linux服务器
2020/08/26 Python
python的dict判断key是否存在的方法
2020/12/09 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
印度低票价航空公司:GoAir
2017/10/11 全球购物
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
小学教师师德反思
2014/02/03 职场文书