还是先看效果图
当我输入“苹”时,会自动显示一个下来框,把服务器端匹配的结果返回。
是不是很不错,下面我来详细说明一下他的开发过程
(1)jsp页面
这是body部分
它包含一个输入框,定义了一个键盘事件,当按键抬起时触发findNames()(呆会介绍)。还有一个相对的table,用于下拉显示。
好了,该看最主要的部分了
以上代码我不想说明,了解ajax的对它再熟悉不过了。
这就是键盘触发调用事件,也没什么特别的,但要说明的是if判断里的
escape(inputField.value).indexOf("%")!=-1
当输入是中文时(即inputField.value的值),值自动国际化了(如“%u1234”),所以不能再以简单的按一个键就触发一次来衡量了。
这个没什么说的,接下来主要介绍的是setNames()这个函数。
这个函数根据返回值来生成下拉框,并定义了一些下拉框中项的触发动作,即当点击下拉框中的一项时要把它填充到文本框中(populateName函数)。
这段代码我就不多说了,是设置下拉框位置的。
这是清除下拉框的。
好了,jsp页面部分介绍完毕

(2) servlet部分
在url中定义了请求路径(autoCompleteServlet?)
在web.xml中要为这个路径定义一个servlet类,这里省略web.xml的说明。
这个类也没什么特别的,但要说的是AjaxDecode类和NameService类
AjaxDecode类是专门进行编码转换的,在servlet中用到的是
String getUrlParameter(HttpServletRequest request,String
targetstr)这个函数,第一个参数是request,第二个参数是要转换的键。代码如下:
NameServie类是自己定义的一个类,提供了输入文本的匹配,反回匹配的list。下面是这个类的代码:
插入表情