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 应用技巧集合[推荐]
Aug 30 Javascript
jQuery 自动增长的文本输入框实现代码
Apr 02 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
Feb 08 Javascript
kindeditor修复会替换script内容的问题
Apr 03 Javascript
canvas绘制万花筒效果(代码分享)
Jan 20 Javascript
layui表格实现代码
May 20 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
详解如何使用koa实现socket.io官网的例子
Nov 04 Javascript
在Web关闭页面时发送Ajax请求的实现方法
Mar 07 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 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 使用post,get的一种简洁方式
2010/04/25 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Python OS模块常用函数说明
2015/05/23 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
常用python编程模板汇总
2016/02/12 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
python实现拼图小游戏
2020/02/22 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
优秀毕业生自荐信
2014/06/10 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang