easyUI實現(xiàn)類似搜索框關鍵詞自動提示功能示例代碼
在一個DataGrid里面,搜索行所在位置
實現(xiàn)的效果如下:
在搜索框中輸入部分列名關鍵字,即可匹配到行的位置。
EasyUI的SearchBox組件只提供了靜態(tài)搜索框,我們可以使用ComboBox來實現(xiàn)動態(tài)的自動關鍵匹配效果,并且不需要加載遠程數(shù)據(jù)。當前頁面的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、實現(xiàn)本地數(shù)據(jù)加載
$("#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是一個適配器,它將本地數(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方法獲取當前數(shù)據(jù)表的所有行,然后通過map轉(zhuǎn)換。
success(items);
到此就完成了數(shù)據(jù)的轉(zhuǎn)換
step3、實現(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
jquery關于事件冒泡和事件委托的技巧及阻止與允許事件冒泡的三種實現(xiàn)方法
大家都知道,jQuery事件觸發(fā)時有2種機制,一種是事件委托,另一種是事件冒泡,冒泡或默認的事件發(fā)生,在某些時候是不需要的,在此就需要一些可以阻止冒泡和默認的事件的方法,本文介紹三種方法做到不同程度的阻止,感興趣的朋友可以了解下,或許對你了解冒泡事件有所幫助2015-11-11JQuery操作textarea,input,select,checkbox方法
本文給大家匯總介紹了一些JQuery操作textarea,input,select,checkbox的方法和技巧,十分的簡單實用,都是小編項目中使用過的,這里推薦給大家。2015-09-09