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 相关文章推荐
JS的数组的扩展实例代码
Jul 09 Javascript
jQuery 数据缓存data(name, value)详解及实现
Jan 04 Javascript
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
Javascript实现的类似Google的Div拖动效果代码
Aug 09 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
Node.js中的事件驱动编程详解
Aug 16 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
使用jQuery实现返回顶部
Jan 26 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
Feb 25 Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
微信上传视频文件提示(推荐)
Nov 22 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 时间计算问题小结
2009/01/04 PHP
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
详解PHP中的Traits
2015/07/29 PHP
Symfony的安装和配置方法
2016/03/17 PHP
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
Python中特殊函数集锦
2015/07/27 Python
Python ftp上传文件
2016/02/13 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
集体备课反思
2014/02/12 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
python 中yaml文件用法大全
2021/07/04 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers