通过 ajax 仿照百度搜索功能[实例]

20 篇文章 0 订阅
7 篇文章 0 订阅
<script>
		
	var bind_name = 'input';//修改input框value数值,发生变化的时候,触发的事件,针对w3c标准浏览器
	if (navigator.userAgent.indexOf("MSIE") != -1){//IE的 属性 非常重要
		bind_name = 'propertychange';
	}
	var current_index = -1;
	var timer;
	$('#searchId').bind(bind_name,function(){
			if(timer != null){
				clearTimeout(timer);
			}
			timer = setTimeout(
				function(){
					$.ajax({
					   type: "POST",
					   url: "./ajax.action",
					   data: "",
					   timeout: 1000,
					   dataType : "html",
					   beforeSend:function(){$("#search_btn").addClass('loading');},
					   success: function(msg){
					   		$("#search_btn").removeClass('loading');
					   	
					   		$('#showInfo').css('display','block');
							$('#showInfo').css('top',top);	
					   		
						  	$('.showInfo').html(msg);
						  	// $('#showInfo table tr td ul li').hover(function(){
							//	$(this).css('background-color','red').siblings().css('background-color','');
							// })
							current_index = -1;
							 $('#showInfo table tr td ul li').hover(function(){
								$(this).css('background-color','red');
							 },function(){
							 	$(this).css('background-color','');}
							 );
					   },
					   error: function(){
				      			alert('error');
				  	   }
					}); 
				   },
				500
			);
	});
	
	//用户按下键盘键
	$('#searchId').keydown(function(e){
		switch(e.keyCode){
			case 27://esc 
				$('#showInfo').css('display','none');
			break;
			
			case 13://enter
				if(current_index >=  0){
					var currentObj =  $($('#showInfo table tr td ul li.result')[current_index]);//取得链接的href
					var url = currentObj.find('a').attr('href');
					window.loaction.href = url;
					return true;
				}else{
					return false;
				}
				
			break;
			case 40://向下 下标递增
			
				var result_count = $('#showInfo table tr td ul li.result').size();
				if(current_index >= result_count-1){ 
					current_index=-1;
				}	
	           
	            $($('#showInfo table tr td ul li.result')[++current_index]).mouseover().siblings().mouseout();
				
			break;
			case 38://向上 下标递减 
				var result_count = $('#showInfo table tr td ul li.result').size();
				if(current_index <= 0){ 
					current_index=result_count;
				}	
	           
	            $($('#showInfo table tr td ul li.result')[--current_index]).mouseover().siblings().mouseout();
			break;
			
			
		}	
		
	
	
	})
	

</script>
<form>
            <input type="text" id="searchId" />
            <input type="submit" id="search_btn" value="" />
        </form>
        <div style="width:300px;height:500px;border:1px solid #817F82;display:none;position: absolute;" id="showInfo" class="showInfo">
            
        </div>
public String ajax(){
        HttpServletResponse reponse = ServletActionContext.getResponse();
        try {
        //    String str = "{\"username\" : \"andy\",\"age\":23}"; jsonstr
        //    String str = "[{\"username\" : \"andy\",\"age\":23},{\"username\" : \"jack\",\"age\":32}]"; //jsonarray
            String html = "<table><tbody>" + "<th>SONG </th>" + "<tr><td><ul>"
                    + "<li class=\"result\"><a href=\"www.baidu.com\">" + "BEAN JINE"
                    + "<li class=\"result\"><a href=\"www.dangerous.com\">" + "dangerous"
                    + "<li class=\"result\"><a href=\"www.dangerous1.com\">" + "dangerous1"
                    + "<li class=\"result\"><a href=\"www.dangerous2.com\">" + "dangerous2"
                    + "<li class=\"result\"><a href=\"www.dangerous3.com\">" + "dangerous3"
                    + "<li class=\"result\"><a href=\"www.dangerous4.com\">" + "dangerous4"
                    + "<li class=\"result\"><a href=\"www.dangerous5.com\">" + "dangerous5"
                    + "<li class=\"result\"><a href=\"www.dangerous6.com\">" + "dangerous6"
                    + "</a></ul><td></tr>" + "<tbody></table>";    
            reponse
                    .getWriter()
                    .print(html);
            reponse.getWriter().flush();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        return null;
    }
    






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值