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的图片切换效果
Jul 06 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
Mar 03 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
js中获取键盘事件的简单实现方法
Oct 10 Javascript
JavaScript实现鼠标点击导航栏变色特效
Feb 08 Javascript
JavaScript 中 apply 、call 的详解
Mar 21 Javascript
JS 实现百度搜索功能
Feb 01 Javascript
JavaScript反射与依赖注入实例详解
May 29 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
Apr 26 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中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
用Python配平化学方程式的方法
2019/07/20 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
J2EE模式面试题
2016/10/11 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
大学毕业生通用求职信
2013/09/28 职场文书
专升本个人自我评价
2013/12/22 职场文书
宿舍违规检讨书
2014/01/12 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
学生会部长竞聘书
2014/03/31 职场文书
大学迎新标语
2014/06/26 职场文书
2014年信访工作总结
2014/11/17 职场文书