java简单的实现搜索框的下拉显示相关搜索功能

最近做了一个简单的搜索框下面下拉显示相关搜索的功能,有点模仿百度的下拉展示相关搜索

  先上个展示图 : 点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来

  搜索框相关搜索的展示很简单,就是根据你的搜索词,去数据库中匹配,是否有类似的搜索词存在,按照搜索词被搜索的次数进行排序显示出来

我设计的是每次搜索一个词,提交之后都会去数据库进行查询,看是否存在这个搜索词的搜索,若存在,则对数据库中的这个搜索词对象进行次数加1,不存在,则创建这个新搜索词对象,保存在数据库中,定义搜索次数为1

  每次提交搜索都会将搜索词进行保存或次数加1,方便下次显示相关搜索

 1 public String soso(){
 2         if(search!=null){
 3             searchBiz.addSearch(search);//存储搜索对象或对搜索对象的搜索次数+1
 4         }
 5         return "soso";
 6     }
 7     public String getRelativeSearch() throws UnsupportedEncodingException{//根据搜索词内容得到相关的搜索对象
 8         content = URLDecoder.decode(content,"utf-8");//url解码,将其还原成中文等内容
 9         String ss = content.replaceAll("(?s)(.)(?=.*\\1)", "");//这个方法是网上查的,删除字符串里面重复出现的字符内容,我在这边设计,主要就是为了排除%的影响,会匹配到所有内容
10         if(content!=null&&!content.equals("")&&!ss.equals("%")){//即如果搜索词全部是由百分号组成,则去查询相关的搜索词
11             searchs = searchBiz.getRelativeSearch(content);//得到相关的搜索词对象,最多显示10个
12         }
13         return "searchs";
14     }

  还有就是页面上方法的监听,在什么时候会显示下拉框内容,什么时候会隐藏下拉框内容,我简单参考了下百度的设计,并用自己的方法实现,可能真实设计上会有出入。一开始,我设计的是onchange监听,但发现onchange只有在失去焦点并且改变内容才会触发,后来改为了onkeyup来监听搜索框的内容,即键盘释放后,去数据库查询得到相关的搜索词对象。

 1 <body class="index">
 2     <div class="searchbox ">
 3         <div class="search w652 center">
 4           <form  name="formsearch" method="post" action="<c:url value="/SearchAction_soso.action"/>">
 5             <div class="form">
 6                 <div class="form_left">
 7                     <!-- 搜索框 -->
 8                     <div class="form_right">
 9                       <input onkeyup="Search.relativeS()" autocomplete="off" name="search.content" type="text" class="search-keyword" id="search-keyword" value="输入搜索关键词,回车搜索" onfocus="if(this.value==‘输入搜索关键词,回车搜索‘){this.value=‘‘;};Search.relativeS()"  onblur="if(this.value==‘‘){this.value=‘输入搜索关键词,回车搜索‘};setTimeout(Search.hiddenhot,100)" />
10                       <button type="submit" class="search-submit" >搜索</button>
11                     </div>
12                     <!-- 下拉框 -->
13                     <ul id="hotwords" class="hotwords">
14
15                     </ul>
16                 </div>
17             </div>
18           </form>
19            </div>
20     </div>
21   </body>

  在js中通过ajax实现和后台的交互,得到查询出来的search对象

 1 relativeS:function(){
 2         var input = document.getElementById("search-keyword");
 3         var content = input.value;
 4         content= encodeURI(encodeURI(content));//URI编码转换
 5         Ajax.sendRequest("post","url","content="+content,this.relativefun)
 6     },
 7     relativefun:function(p){
 8         var searchs = JSON.parse(p.text);
 9         var ul = document.getElementById("hotwords");
10         //得到相关搜索的搜索对象并进行操作,生成对象加载到页面中
11         if(searchs!=null&&searchs.length>0){
12             ul.style.display = "block";
13             $("#hotwords li").remove();//移除之前生成的li相关搜索
14             for(var i=0;i<searchs.length;i++){
15                 var li = document.createElement("li");
16
17                 li.innerHTML = searchs[i].content;
18                 li.onclick = function onclick(){
19                     Search.choosecontent(this);
20                 }
21                 ul.appendChild(li);
22             }
23         }else{
24             ul.style.display = "none";
25         }
26     },
27     choosecontent:function(e){
28         var input = document.getElementById("search-keyword");
29         var ul = document.getElementById("hotwords");
30         input.value = e.innerHTML;
31         ul.style.display = "none";
32     },
33     //搜索框丢失焦点,下拉框也会消失
34     hiddenhot:function(){
35         var ul = document.getElementById("hotwords");
36         ul.style.display = "none";
37     }

  点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来

java简单的实现搜索框的下拉显示相关搜索功能

时间: 2024-11-02 17:48:25

java简单的实现搜索框的下拉显示相关搜索功能的相关文章

使用jQuery-UI来实现一个Ajax的自动完成功能(自动填充搜索框的下拉值)

首先你要在.net拓展包中去搜索  jquery ui (Combined Libray)安装这么个文件 第二部   在控制器中添加我们根据输入搜索框的值获取符合的记录集的action 第三步  有了数据集,就该去画我们的页面了 第四步  修改我们的js文件 具体效果就是这样的 如图:(不知道为什么我的ui样式有点丑) 但是这样 还需要选择某一项,再点击搜索,很繁琐的...我们想实现选中之后 直接得到搜索页 第五步  再次修改我们的js文件 这样就实现了你一选,然后就出现了搜索结果,一步到位.

JQuery 简单的文字超出部分隐藏下拉显示

HTML代码: <body> <div class="txt_bos"><!--在每一个放置文字的class外面包一个div,以便设置动画样式用,同样用class--> <div class="txt1"><!--为了保证功能的通用性,这里全用class--> 石村,位于苍莽山脉中,四周高峰大壑,茫茫群山巍峨. 清晨,朝霞灿灿,仿若碎金一般洒落,沐浴在人身上暖洋洋. 一群孩子,从四五岁到十几岁不等,能有数十

【JQuery插件】带搜索框的下拉框美化插件

1  引入js css 文件 <link href="jquery.searchableSelect.css" rel="stylesheet" type="text/css"> <script src="jquery-1.11.1.min.js"></script> <script src="jquery.searchableSelect.js"></

6个漂亮的Web前端表单提交以及搜索框(下)

4.jQuery圆形修边注册表单 能在支持 FireFox.Chrome.Safari.傲游.搜狗.360浏览器. 源码下载/  在线演示 5.  HTML5超酷表单展示效果 源码下载  /  在线演示 6.  纯CSS3实现的紫色登录表单 源码下载 /  在线演示 6个漂亮的Web前端表单提交以及搜索框(下)

Jquery学习笔记:操作form表单元素之一(文本框和下拉框)

一.概述 在web页面开发中,经常需要获取和设置表单元素的值(如文本框中的内容),特别是在ajax应用中,更是常态.本文系统的介绍下如何操作. 同操作其它html元素一样,操作的过程差不多. 第一步,需要获取到表单元素对应的jquery(或dom)对象.这个主要是利用jquery的选择器机制. 第二步,调用表单元素的属性和方法来获取和设置值. 其中最常见的就是利用jquery对象的val方法.因为很多表单元素都有标准的 value属性,这个可以通过jquery的 val方法来读取和设置属性值.

通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-

vue.js实现单选框、复选框和下拉框

Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势.下边以单选框.复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式. 一.单选框 在传统的HTML中实现单选框的方法如下: <div id="app"> <input type="radio" name="gender" value="man" id="man"/><label

带复选框的下拉框

效果图: . css: <style type="text/css"> /* 带复选框的下拉框 */ ul li{ list-style: none; padding:0px; margin: 0px; } .select_checkBox{ border:0px solid red; position: relative; display:inline-block; } .chartQuota{ height:23px; float:left; display:inlin

Easyui-combobox-checkbox-带复选框的下拉框

$.post("getSubInsuranceTypeList.do",{parent_id:node.id},function(result){                        if (result.length == 0){                            $("#sub-insurance").addClass("none");                        } else {