搜索结果仿google搜索提示SuggestFramework的使用

输入提示框架

suggest frameworkversion0.31 使用说明

该框架的官方下载地址:http://sourceforge.net/project/showfiles.php?group_id=145701

 

先来看一下效果图:

 

 

一.              首先来看一下什么是suggest framework
Suggest Framework 故名思意,就是仿 Google Suggest 的一个小框架,让你的文本框也有提示功能。利用suggest framework你可以在自己的网站上很轻松实现“输入提示”效果,这种效果会很大程度上提高用户体验,提高搜索效率。

一个页面上可以出现多个搜索框,每个搜索框都可以实现单独配置。
此框架无浏览器限制,基本兼容当前的绝大多数浏览器,包括Internet Explorer 5 (Win/Mac)Firefox (Win/Mac)Opera 8 等等。

二.              .下面来介绍一下怎么安装
你只需要复制SuggestFramework.js到你的服务器,然后自定义提示效果的css样式,实现个性的搜索提示。
css样式文件,需要你自己做好,并且加入到每一个页面。
补充:SuggestFramework.js已经试用Dojo ShrinkSafe进行压缩,具体请看http://alex.dojotoolkit.org/shrinksafe/



三.              .然后介绍一下如何使用
在网页的<head></head>标签中,加入下面两句:

<script type=”text/javascript” src=”/path/to/SuggestFramework.js”></script>

<script type=”text/javascript”>window.onload=initializeSuggestFramework;</script>

 

再加上自定义的样式:

<link href="SuggestFramework.css" rel="stylesheet" type="text/css">

 

在页面中加入js框架及onload方法后,每个取了名的文本框会多出五个属性:

  1. action 必须。接受 GET 方式提交的数据,并返回相关 Javascript 数组的动态页。

  2. capture 如果返回的结果不止一列(比如本例中的单词和中文意思),将要替换用户输入的那一列(从 1 开始算)。通常这个和数据库字段相对应。
    可选,默认为 1.

  3. columns 下拉显示的列数,比如本例中,按字母查询单词,并将中文意思显示在右侧。可选,默认为 1.

  4. delay 查询延时,单位为毫秒。较低的延时会得到更快的反应,但会加重服务器负担。可选,默认为 10001秒)。

  5. heading 如果设为 true ,第一个数组值将作为不可选择项(标题栏)。当有两列或两列以上数据时非常有用。可选,默认为 false.

 

在静态页面中,则可以如此写成:

<table>

<tr><td>

搜索条件提示:</td><td><input id="userName" name="userName" type="text" action="/servlet/suggest.do" columns="2" capture="2"/></td>

</td></tr>

</table>

 

技巧说明:为了更好地定位提示信息的显示位置,最好就把文件输入框单独放到一个<td></td>中。

参数action可以接地址,并返回相关 Javascript 数组的动态页。格式如下:

 

一维数组这么写:
new Array(”val1″, “val2″, “val3″);
二维数组这么写:
new Array(
new Array(”
1行条第1”, “1行第2”)
new Array(”
2行条第1”, “1行条第2”)
new Array(”
3行条第1”, “1行条第2”)
);

 

注意,在二维数组中,最后一行是没有逗号结束的。

 

最后介绍一下,css中需要定义的4个类

.SuggestFramework_List         提示内容所在区域

.SuggestFramework_Heading      第一条提示

.SuggestFramework_Highlighted  设置高亮的一条提示

.SuggestFramework_Normal       其他提示

 

例:

 

 

.SuggestFramework_List

{

border
: 1px solid #3399CC;     

       position
: absolute;

    display
: none;

    font
: 10pt "Verdana";

    line-height
: 150%;

    background-color
: #fff;    


}

  

.SuggestFramework_Heading

{

  cursor
: default;

  text-indent
: 4px;

  border-bottom
: 1px solid #3399CC;

  width
: 100%;

  color
: #fff;

  background-color
: #3399CC;

}

  

.SuggestFramework_Highlighted

{

  cursor
: default;

  text-indent
: 4px;

  border-bottom
: 1px solid #3399CC;

  width
: 100%;

  color
: #fff;

  background-color
: #3399CC;

}

  

.SuggestFramework_Normal

{

padding
: 0px 1px 0px 1px;

background-color
: #FFFFFF;

color
: #000000;

}

 

四.              提示,如果出现乱码或者javascript脚本错误请用下面方法解决。

1.       给后台返回数据的页面(例如display.asp 添加一个 GB2312 UTF-8 的函数,使用此函数把数据库读出来的内容转成 UTF-8 编码。
2.
如果是后台为asp页面,代码首行添加 <[email=%@LANGUAGE=”VBSCRIPT]%@LANGUAGE=”VBSCRIPT[/email]” CODEPAGE=”936″%> 指令。
3.
把后台返回数据的页面(例如display.asp)文件存成 UTF-8 格式。

五.              参数接收:

1.type 输入框的name
2.q
搜索关键字(默认UTF-8编码)

 

举例来说,要接收文本输入的值,在servlet编程中,则先要设置接收编码,如:

request.setCharacterEncoding("UTF-8");

request.getParameter("q");

 

 

六.              静态页面举例:

搜索页面:

< html >

     < head >

         < meta http-equiv ="Content-Type" content ="text/html; charset=gbk" >

         < script src ="/script/SuggestFramework.js" > </script>  

         < link href ="SuggestFramework.css" rel ="stylesheet" type ="text/css" >      

         < script type ="text/javascript" >window.onload=initializeSuggestFramework; </script>

     </head>

     < body >

     < form name ="form1" id ="form1" method ="" action="" >

         < table >

             < tr > < td >

                搜索条件提示: </td> < td > < input id ="userName"   name ="userName" type ="text" action ="backend.htm" columns ="2" capture ="2" /> </td>

             </td> </tr>

         </table>

     </form>

     </body>

</html>

 

 

backend.htm页面写成:

 

new Array(

              new Array("李四",""),

              new Array("李明","")

);    

为了能够正常显示中文,backend.htm文件必须保存为utf-8编码。

 

在此例中,无论文本框输入什么值,都会返回李四    李明  男。因此,要做成动态的效果,就必须写后台程序,动态改变bacdend.htm的值。

特别说明:例子必须在服务器中才能正常运行。

你可能感兴趣的:(搜索结果仿google搜索提示SuggestFramework的使用)