jQuery实现自动提示,分类选择等功能的搜索框

文章的三个部分:
1.方法讲解
2.效果展示
3.代码
1.方法讲解

  1. 自动提示(效果见第一张图)
    思路很简单,就是用jquery把输入结果和查询绑定,然后拼接显示出来就行了。
    具体代码见3.searchResult的//自动提示——搜索框

①首先关于绑定input,propertychange事件,大多情况下input能够正常提示要显示的结果,但是笔者在中文输入法下回车输入英文,并不会出结果,所以添加了propertychange事件.
详情参考
http://blog.csdn.net/this_itboy/article/details/51727226
②向action传值时,
‘${pageContext.request.contextPath}/bid/reAction_autoComplete.action?keyWord=’+searchText+’&keyType=’+keyType,
用&传第二个值
③拼接自动提示的结果

for(var i=0;i<d.length;i++){
                 html+= '<li>'+d[i].searchText+'</li>' ;
              }

④搜索框默认情况下是不显示的,用hide()方法隐藏,当输入结果时,自动出现并定位在搜索框下方
这里的search-suggest就是智能提示的id

$('#search-suggest').show().css({
                    top:$('#search-form').offset().top+$('#search-form').height(),
                    left:$('#search-form').offset().left,
                    position:'absolute',
                    width:inputBoxW-inputBtnW
                });

然后点击空白处,提示框消失

$(function(){
   
        $(document).bind('click',function(){
   
         $('#search-suggest').hide();
        });

⑤在点击智能提示的数据时,把提示的内容放到搜索框里面并执行方法
这里如果不知道怎么具体找值,可以先把this输出,然后在console里面找,这里感谢Johnson的帮助,用处很大。

 $("#search-result li").click(function(){
   
                    var $this=$(this);
                    console.log($this["0"].innerText);
                    $('#search_input').val($this["0"].innerText);
                    $("#ss").click();
                });

2.分类搜索

在这里,我采用了比较简单的方法。就是把页面分成两个部分,显示搜索结果的searchResult_content.jsp和大页面的searchResult.jsp
每次执行搜索的时候,只要先判断searchResult里面的参数,然后传给后台执行返回显示结果的内容就好了。
这里没什么难度,值得一提的是,可以通过下列方式调用css样式,其中faultLight是默认的颜色样式。

var faultLight={
            'color':'#000',
            'background-color':'#FFF'
        }

$("#publishDatetime").css(highLight);

2.效果展示

自动提示功能:

搜索结果及分类搜索
3.代码:
1.这是主页的搜索框页面代码 searchBox.jsp

<!--搜索框-->
<form id="searchArea" class="navbar-form navbar-right form-inline paddingLRzero" role="search">
                            <div class="form-group">
                                 <input type="text" id="searchInput" class="form-control search-input" name="keyWord" placeholder="请输入关键词">
                            </div>
                            <button  type="button" id="searchBtn" class="btn btn-default">
                               <span class="glyphicon glyphicon-search"></span>                       
                            </button>
                      </form> 

 //搜索
    $("#searchBtn").click(function(){
        var keyWord=$('#searchInput').val();
        $.ajax({   
            url:'${pageContext.request.contextPath}/bid/reAction_querySearchResult.action',
            type:'POST',
            data:{
                  pageNo:1,
                  keyWord:keyWord
            },
            success:function(data){    
                location.href='/DataMarket/searchResult?keyWord='+keyWord
            },
        })

    })

2.这里是主搜索框及页面的代码searchResult.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>搜索结果</title>
<%@include file="/public/website-head.jspf"%> 
<script type="text/javascript">
        //初始条件
        //高亮

        var highLight={ 
            'background-color':'#0099FF',
            'color':'white'
        }
        //默认亮度
        var faultLight={
            'color':'#000',
            'background-color':'#FFF'
        }

        var keyType="resource";
        var sortValue="publishDatetime";
    $(function(){
    

        $("#resource").css(highLight);
        $("#publishDatetime").css(highLight);

        //把搜索类型按钮   绑定点击事件
        $("#search-list li").click(function(){
    
            var $this=$(this);
            keyType=$this["0"].attributes["1"].value
            if(keyType=="requirement"){
                $("#buyCount").hide();
                if(sortValue=="buyCount"){
                    sortValue="publishDatetime";
                    $("#publishDatetime").css(highLight);
                }
            }else{
                $("#buyCount").show();
            }
            $this.css('background-color','#13c5c4')
            $("#search-list li").css(faultLight);
            $this.css(highLight);
            console.log($this["0"].attributes["1"].value);
            $("#ss").click(); 
        });
        //把排序方式  绑定点击事件
        $("#search-sort li").click(function(){
    
            var $this=$(this);
            sortValue=$this["0"].attributes["1"].value
            $("#search-sort li").css(faultLight);
            $this.css(highLight)
            console.log(sortValue);
            $("#ss").click(); 
        });
        //绑定回车事件,有问题
        $("body").keydown(function() {
    
            if(event.keyCode=="13"){ 

            $("#ss").click(); 
        } 
        }); 

     $("#ss").click(function(){
    
        // 载入
        var dialog = bootbox.dialog({
            message: '<p><i class="fa fa-spin fa-spinner"></i> 载入中...</p>',
            closeButton: false
        }); 
         var pageNo=$("#hidCurrentPage").val();
         var keyWord=$('#search_input').val();
         if(keyWord.length==0){
             dialog.modal('hide');// 载入结束

         }else{
             if(pageNo==''||typeof(pageNo)==undefined){
                 $.ajax({
                    url:'${pageContext.request.contextPath}/bid/reAction_complexSearch.action',
                    type:'POST',
                    data:{
                        pageNo:1,   
                        keyType:keyType,
                        keyWord:keyWord,
                        sortValue:sortValue
                    },
                    success:function(data){
        
                        $('#110').html(data);
                        dialog.modal('hide');// 载入结束
                    },
                    error:function(){
    
                        dialog.modal('hide');// 载入结束
                        errorTip();//出错提示       
                    },

                }); 
             }else{
                 $.ajax({
                    url:'${pageContext.request.contextPath}/bid
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值