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 相关文章推荐
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 Javascript
JQuery autocomplete 使用手册
Apr 01 Javascript
防止按钮在短时间内被多次点击的方法
Mar 10 Javascript
jQuery中width()方法用法实例
Dec 24 Javascript
javascript日期格式化方法汇总
Oct 04 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
微信小程序 蓝牙的实现实例代码
Jun 27 Javascript
详解VueJS 数据驱动和依赖追踪分析
Jul 26 Javascript
详解React之key的使用和实践
Sep 29 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
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 表单提交给自己
2008/07/24 PHP
php 函数使用方法与函数定义方法
2010/05/09 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
python fabric使用笔记
2015/05/09 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
python使用KNN算法手写体识别
2018/02/01 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
自学python的建议和周期预算
2019/01/30 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python logging.info在终端没输出的解决
2020/05/12 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
生产车间主任的个人自我鉴定
2013/10/25 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
2014年施工员工作总结
2014/11/18 职场文书
网络营销计划
2015/01/17 职场文书
党员自我评价2015
2015/03/03 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang