easyUI實(shí)現(xiàn)類似搜索框關(guān)鍵詞自動(dòng)提示功能示例代碼
在一個(gè)DataGrid里面,搜索行所在位置
實(shí)現(xiàn)的效果如下:
在搜索框中輸入部分列名關(guān)鍵字,即可匹配到行的位置。
EasyUI的SearchBox組件只提供了靜態(tài)搜索框,我們可以使用ComboBox來實(shí)現(xiàn)動(dòng)態(tài)的自動(dòng)關(guān)鍵匹配效果,并且不需要加載遠(yuǎn)程數(shù)據(jù)。當(dāng)前頁面的DataGrid的數(shù)據(jù)我們可以直接在本地獲取之。
代碼如下:
setp1、創(chuàng)建combobox
<div style="text-align: left;background-color: #E0ECFF;padding-left: 10px;padding-top: 5px;"> <div id="searchField" style="width:250px"></div> </div>
step2、實(shí)現(xiàn)本地?cái)?shù)據(jù)加載
$("#searchField").combobox({ loader: function(param,success,error){ //獲取輸入的值 var q = param.q || ""; //此處q的length代表輸入多少個(gè)字符后開始查詢 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 () { //設(shè)置placeholder $("input[class='textbox-text validatebox-text textbox-prompt']").attr("placeholder","輸入標(biāo)注字段,定位所在行"); }, 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是一個(gè)適配器,它將本地?cái)?shù)據(jù)轉(zhuǎn)換成combobox所需的數(shù)據(jù)格式:
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方法獲取當(dāng)前數(shù)據(jù)表的所有行,然后通過map轉(zhuǎn)換。
success(items);
到此就完成了數(shù)據(jù)的轉(zhuǎn)換
step3、實(shí)現(xiàn)行的選中
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事件中,匹配所在行調(diào)用selectRow即可。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery選擇器_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
選擇器是jQuery的核心,一個(gè)選擇器寫出來類似$('#dom-id')。下面給大家分享jQuery選擇器的相關(guān)知識(shí),感興趣的朋友一起看看吧2017-07-07基于jquery實(shí)現(xiàn)的鼠標(biāo)滑過按鈕改變背景圖片
基于jquery實(shí)現(xiàn)的鼠標(biāo)滑過按鈕改變背景圖片,發(fā)現(xiàn)用CSS用時(shí)IE6不兼容,所以就用見JQ實(shí)現(xiàn)。2011-07-07jQuery實(shí)現(xiàn)延遲跳轉(zhuǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)延遲跳轉(zhuǎn)的方法,涉及jQuery中setTimeout方法延遲觸發(fā)的使用技巧,需要的朋友可以參考下2015-06-06jquery關(guān)于事件冒泡和事件委托的技巧及阻止與允許事件冒泡的三種實(shí)現(xiàn)方法
大家都知道,jQuery事件觸發(fā)時(shí)有2種機(jī)制,一種是事件委托,另一種是事件冒泡,冒泡或默認(rèn)的事件發(fā)生,在某些時(shí)候是不需要的,在此就需要一些可以阻止冒泡和默認(rèn)的事件的方法,本文介紹三種方法做到不同程度的阻止,感興趣的朋友可以了解下,或許對(duì)你了解冒泡事件有所幫助2015-11-11JQuery操作textarea,input,select,checkbox方法
本文給大家匯總介紹了一些JQuery操作textarea,input,select,checkbox的方法和技巧,十分的簡單實(shí)用,都是小編項(xiàng)目中使用過的,這里推薦給大家。2015-09-09