这个插件的目的在于提高用户对于数据的选择效率。经常录入数据的人肯定能明白,在一长串列表中选择你想要记录是一件很费眼神的事;记得当初玩开心网可以按拼音首字母找到自己的好友,当时就觉得很是方便。如果您想提高用户对您软件的评价,请您考虑这个插件。
实现原理:重写了Store中返回过滤函数的方法,使其中需要过滤的汉字转换为其拼音首字母数组(因为有多音字,数组内每一项对应一种拼音的可能性),遍历数组每一项与当前输入项生成的前端匹配正则表达式进行比对,有一个满足就返回true,都不满足返回false
附件有示例
/**
* 修改组件内部Store的createFilterFn方法,使其按照拼音首字母进行过滤
*
* 1.0.1修改:
* 修复了多音字筛选不到的bug
*
* 1.0.2修改:
* 为store添加了一个拼音的缓存
*
* @author chemzqm@gmail.com
* @version 1.0.2
* @createTime 2010-04-18 23:12:31
*/
Ext.ns("Ext.ux");
Ext.ux.PinyinFilter=function(){
//主要方法,由字符串生成拼音首字母
function makePy(str){
if(typeof(str) != "string"){
return str;
}
var arrResult = new Array();
for(var i=0,len=str.length;i<len;i++){
var ch = str.charAt(i);
arrResult.push(checkCh(ch));
}
var resarr = mkRslt(arrResult);
return resarr;
}
function checkCh(ch){
var uni = ch.charCodeAt(0);
if(uni > 40869 || uni < 19968)
return ch; //dealWithOthers(ch);
return (oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)));
}
function mkRslt(arr){
var arrRslt = [""];
for(var i=0,len=arr.length;i<len;i++){
var str = arr[i];
var strlen = str.length;
if(strlen == 1){
for(var k=0;k<arrRslt.length;k++){
arrRslt[k] += str;
}
}else{
var tmpArr = arrRslt.slice(0);
arrRslt = [];
for(k=0;k<strlen;k++){
var tmp = tmpArr.slice(0);
for(var j=0;j<tmp.length;j++){
tmp[j] += str.charAt(k);
}
arrRslt = arrRslt.concat(tmp);
}
}
}
return arrRslt;
}
var strChineseFirstPY = 【太长,此处省略】
var oMultiDiff=【太长,此处省略】
//重写生成过滤方法的方法
function createFilterFn(property, value, anyMatch, caseSensitive){
if(Ext.isEmpty(value, false)){
return false;
}
value = this.data.createValueMatcher(value, anyMatch, false);
return function(r){
var os = r.data[property],arr;
if(this.pyCache[os]){
arr = this.pyCache[os];
}
else{
arr = makePy(os);
this.pyCache[os] = arr;
}
for(var i=0;i<arr.length;i++){
if(value.test(arr[i])){
return true;
}
}
return false;
};
}
return{
init:function(c){
var s=c.store;
s.createFilterFn = createFilterFn;//覆盖原方法
s.pyCache = {};//拼音缓存,汉字字符串与其拼音数组的映射
}
}
}()
- 大小: 2 KB
分享到:
相关推荐
Ext插件安装Ext插件安装Ext插件安装Ext插件安装Ext插件安装Ext插件安装Ext插件安装Ext插件安装
深入浅出Ext_JS:数据存储与传输,学习ext 我在百度搜到的。
Eclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件.rarEclipse下Ext插件....
ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ex
Ext GWT 2.0: Beginner's Guide pdf 和源码,重点推荐学习GWT-EXT的入门资料,英文版的
EXT TreeFilter 插件 提供ext的tree 快速搜索功能 超简单好用~ 支持拼音首字母和中文模糊查询
DW CS3--EXT2.2插件DW CS3--EXT2.2插件DW CS3--EXT2.2插件DW CS3--EXT2.2插件DW CS3--EXT2.2插件
使用Ajax技术在ExtGrid插件中展示数据,这是一个开源的JavaScript Jabber Messenger,采用Ext2.0与Prototype开发,界面比较美观
myeclipse Ext插件
Eclipse Ext插件 Eclipse Ext插件
帮助JSEclipse开发extjs的插件,安装它使用extjs的时候具有自动导入ext框架中的代码功能,非常的使用哦!免费的,它的安装过程很少有的,找了很多资料,没找到,最后看了一个英文的,我自己翻译装了一次,没问题。...
eclipse 3.4 用于 ext 开发的插件 spket。 使用方法: 1.下载后直接解压到 eclipse 插件目录。 2.使用 eclipse 的 links 方式安装。
EXT2.0 插件 Eclipse
vs2008 ext插件vs2008 ext插件vs2008 ext插件 /// <reference path="ext/vswd-ext_2.1.js" />头上面加这句话就ok了
Openlayers扩展插件ol-ext ,2022年4月版本
EXT JS eclipse插件,下了试试,不错的
ext中combo过滤,在combo输入条件,就可以快速过滤出想要的结果列
jira-ext插件旨在以jira-plugin无法实现的方式进行扩展。 Jenkins和JIRA都用作组织工作流程的一部分,因此可以高度自定义。 jira-ext插件通过使您的组织也可以自定义操作(以及何时执行这些操作)来延续了这一理念。...