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 相关文章推荐
HTML5附件拖拽上传drop &amp; google.gears实现代码
Apr 28 Javascript
jquery()函数的三种语法介绍
Oct 09 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
Apr 29 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
jquery实现图片轮播器
May 23 jQuery
纯JavaScript实现实时反馈系统时间
Oct 26 Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
angular中如何绑定iframe中src的方法
Feb 01 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
微信小程序云开发(数据库)详解
May 17 Javascript
JS中比Switch...Case更优雅的多条件判断写法
Sep 05 Javascript
js实现简单进度条效果
Mar 25 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
js 本地预览的简单实现方法
2014/02/18 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python机器学习实战之树回归详解
2017/12/20 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python基于Selenium的web自动化框架
2019/07/14 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
详解Python yaml模块
2020/09/23 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
最新创业融资计划书
2014/01/19 职场文书
顶撞老师检讨书
2014/02/07 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
素质教育学习心得体会
2016/01/19 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python