Chinaunix首页 | 论坛 | 博客
  • 博客访问: 425940
  • 博文数量: 116
  • 博客积分: 7087
  • 博客等级: 少将
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-19 23:32
文章分类

全部博文(116)

文章存档

2012年(1)

2011年(2)

2010年(10)

2009年(21)

2008年(18)

2007年(12)

2006年(21)

2005年(31)

我的朋友

分类:

2006-04-13 23:00:04

最近在开发一个web应用,其中想实现autocomplete功能.本来想自己写,但是发现yahoo mail的autocomplete功能挺好用的,于是准备抄袭一把.
(在yahoo mail中,写信的时候,当你在收件人框中输入1个字符时,它会将你地址簿中以该字母打头的记录,全部以下拉列表方式显示出来.)
 
为了将它的功能移植到我的应用中去,我硬着头皮读了一遍整个代码.虽然没有全懂,但是大致还是明白了.我研究了4天,今天总算有了结果.
 
yahoo的autocomplete功能放在一个ac.js文件中,使用前,要准备2个数组,一个放nickname和索引,一个放名称和email地址.但是这两个数组的内容都经过了加密.不过加密的算法相当简单.(不知道是为了保密还是为了避免别人抄袭) 就是将一个字母替换成另外一个字母.大概叫rot13算法.
 
自动完成的原理就是根据用户输入的字符,自动出现包含该字符的记录.
 
由于用户可能输入的是nickname,或者是真实姓名.因此程序必须从以上2个数组里去找.这样就不会遗漏nickname或者真实姓名包含该字符的记录.
 
由于nickname和真实姓名都是经过rot13算法加密的,因此在查找之前,必须对用户输入的字符进行rot13加密,然后才能找.
 
如果nickname和真实姓名都是明文呢?那么用户输入的字符,也就不用经过rot13加密,直接查询即可啊.
 
那么由此,我想到了一个简单的办法来移植.
 
我修改ac.js中的rot13转换函数,让它直接返回参数.也就是说不对参数进行任何改变,怎么进来就怎么出去.而数组我采用明文.
 
果然这么一改,马上就可以使用我自己的数据了.由于我这里没有nickname数据,因为我就建了一个空的nickname数组,这样就很完美了.
 
 
 
 
 
 
阅读(2493) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-11-30 14:16:09

有开源的方法参见 javascript autocomplete