`
javazeke
  • 浏览: 86968 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

仿Google自动补全 jQuery 不含索引处理

阅读更多

自动补全

1. 页面有一个文本框,一个自动提示层,一个按

 

<script type="text/javascript" src="../js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="../js/autoComplete.js"></script>

<div style="text-align: left; width: 500px;">
<input type="text" id="key" style="width: 400px;height:25px;" />
<input type="button" id="commit" style="background-color:#1874CD;width:70px;height:25px;border:0px;color:#ffffff;" value=" 提 交 "/>
<div id="autoKey"></div>
</div>

 

自动提示JavaScript…

//页面加载好,autoKey应该隐藏

$(document).ready(function(){

    //定义高亮变量,控制上下键的选择
    //-1代表不高亮任何行
    var highlightindex = -1;
    //提示层的子层数组
    var completesVal;
	//将要显示的提示
	var keys;
    //时间延迟对象
    var timeDelay;

    //获得输入input的对象
    var keyInput=$("#key");
    var keyInputOffset=keyInput.offset();
    var autoDiv=$("#autoKey");
    //提示层的样式
    autoDiv.hide().css("border","1px solid #999999").css("position","absolute")
            .css("top",keyInputOffset.top + keyInput.height() + 8 + "px")
            .css("left",keyInputOffset.left + "px").width(keyInput.width() + 6)
            .css("color","#aaaaaa").css("z-index","10").css("background-color","#FFFFFF");


    
    //按键按下后与服务器的交互
    keyInput.keyup(function(event){
        
        //获取键盘事件对象
        var keyEvent=event || window.event;

        //判断键盘输入的值得范围
        //1.输入的是正常的字母
        //2.向上向下键
        //3。回车键
        var keyCode=keyEvent.keyCode;

        if(keyCode !=38 && keyCode !=40 && keyCode != 13){
            //获取当前文本框中的值
            var currentVal=keyInput.val();
            //如果当前的文本框内容为空,就不在向服务器发送请求
            if(currentVal != ""){
                //取消上次提交
                window.clearTimeout(timeDelay);
                //延迟500ms提交,防止频繁提交
                timeDelay=window.setTimeout(function(){
                    $.post("../ParseParam",{paramInfo:currentVal},function(data){

					 //清空autoDiv的内容并且隐藏
                    	autoDiv.html("");
                    
                    //对回传的数据抽取,组成一个key的数组
                    keys=$(data).find("key");

                    keys.each(function(){

                        var keyval=$(this).text();
                        
                        if(keyval !=null){
                       	 	$("<div>").css("font-size","13px").css("height","18px").css("padding-top","1px").html(keyval).appendTo(autoDiv);
						}
                    });
                    if(keys.length>0){
                        //为提示加上鼠标的选择功能
                        //鼠标over||out会触发事件,并高亮
                        //单击高亮层关闭提示层,并且把值传给文本框

                        completesVal=autoDiv.children("div");

                        //鼠标一移到autoKey上面,上下键的选择就取消
                        autoDiv.mouseover(function(){
                            //highlightindex不等于-1说明先前用上下键移动过
                            if(highlightindex != -1){
                                //定位到那个节点,取消其高亮
                                completesVal.eq(highlightindex).css("background-color","white").css("color","#aaaaaa");
                                //highlightindex = -1;
                                highlightindex = -1;
                            }
                        });

                        completesVal.each(function(){
                            var t=$(this);
                            t.css("cursor","pointer").mouseover(function(){
                                //加上mouseover事件
                                t.css("background-color","#7EC0EE").css("color","#000000");
                            }).mouseout(function(){
                                //mouseout事件
                                t.css("background-color","white").css("color","#aaaaaa");
                            }).click(function(){
                                //单击事件
                                keyInput.val(t.text());
                                autoDiv.hide();
                            });
                        });

                        highlightindex = -1;
                        autoDiv.show();
                    }else{
                        highlightindex = -1;
                        autoDiv.hide();
                    }
                },"xml");
                },500);

            }
        
        }else if(keyCode == 38 || keyCode ==40 || keyCode == 13){
            //第一步先获得提示框里所有补全信息的数组
            // var completesVal=$("#autoKey").children("div");考虑到效率,把这步放到全局
            //向下键的控制
            if(keyCode == 40){
                //如果现在的高亮是存在的,那么我们就要移动highlightindex
                if(highlightindex != -1){
                    //去掉当前高亮
                    completesVal.eq(highlightindex).css("background-color","white").css("color","#aaaaaa");
                }
                //移动高亮的指针,
                //注意这里的highlightindex++一定要放在if的外面,
                // 放在里面如果hightlightindex=-1,则永远也移动不了
                highlightindex++;
                //判断是否到了最后一个元素
                if(highlightindex == completesVal.length){
                    highlightindex = 0;
                }
                //高亮当前highlightindex节点
                completesVal.eq(highlightindex).css("background-color","#7EC0EE").css("color","#000000");
            }
            //向上键的控制
            if(keyCode == 38){
                if(highlightindex != -1){
                    completesVal.eq(highlightindex).css("background-color","white").css("color","#aaaaaa");
                    highlightindex--;
                }
                if(highlightindex ==-1){
                    highlightindex=completesVal.length;
                }
                 //高亮当前highlightindex节点
                completesVal.eq(highlightindex).css("background-color","#7EC0EE").css("color","#000000");
            }

            //enter键的控制
            //1.按下enter键,把提示的值传给文本框
            //2.关闭提示层
            //3.提交
            if(keyCode == 13){
                
                if(highlightindex != -1){
                    //获取当前高亮值
                    var comsVal = completesVal.eq(highlightindex).text();
                   
                    //给文本框赋值
                    keyInput.val(comsVal);
                    //高亮索引回归到初始化
                    highlightindex = -1;
                    //隐藏提示框
                    autoDiv.hide();
                }else{
                    
                    commitSearch();

                    //文本框失去焦点,不然按回车会不停的发出请求
                    keyInput.get(0).blur();
                    autoDiv.hide();
                }
            }

        }
    });


    //提交按钮的事件
    var commitBtn=$("#commit");
    //commitBtn的click事件
    commitBtn.click(commitSearch);

    //提交函数 
    function commitSearch(){

        var cv=keyInput.val();

        //cv=encodeURIComponent(cv);

        window.location.href="../SearchIndex?paramInfo="+cv;
       // $.get("../SearchIndex",{paramInfo:cv});
        
    }
    //keyInput失去焦点后关闭提示层
    //keyInput.blur(function(){
        //autoDiv.hide();
        //highlightindex = -1;
   // });
});

 

 

 

后面的一部分被截断了,可以到我的首页,有续。。

分享到:
评论
2 楼 summersmile 2010-04-29  
好贴,谢谢!!
1 楼 1zebra 2009-11-18  
不错,我去试试

相关推荐

    改进版 jquery 仿百度谷歌自动补全输入(支持中文)

    标题“改进版 jquery 仿百度谷歌自动补全输入(支持中文)”涉及到的是一个基于jQuery的前端开发技术,旨在实现类似百度和谷歌搜索框的自动补全功能,而且这一版本特别优化了对中文字符的支持。在网页交互设计中,...

    仿google自动补全

    【仿谷歌自动补全】是一种常见的前端开发技术,主要用于提高用户在输入框中搜索或填写信息时的效率和用户体验。谷歌自动补全功能是通过分析用户的输入,预测并显示可能的搜索词,使得用户可以快速选择合适的选项,而...

    jquery提示下拉框 仿Google自动补全框

    修改网上的代码完成的,使用jquery+JavaScript形式写的,服务端代码用java编写,当然你可以用其他任何语言编写。suggest是MyEclipse的一个工程,直接import既可用。也可以提取里面的文件自己修改

    Jquery实现Google自动补全效果

    **jQuery实现Google自动补全效果** 在Web开发中,用户输入的实时提示功能,也称为自动补全(Autocomplete)或智能搜索,极大地提升了用户体验。本篇将介绍如何使用jQuery库来实现类似Google搜索那样的自动补全效果...

    AJAX学习总结(九)---Jquery实例:仿googlesuggest自动补全功能

    在本篇博客“AJAX学习总结(九)---Jquery实例:仿googlesuggest自动补全功能”中,作者分享了如何使用jQuery实现一个类似Google Suggest的自动补全功能,这是一种常见的前端交互设计,广泛应用于搜索框输入时提供...

    jquery模仿google自动补全案例

    在Google自动补全功能中,jQuery将扮演核心角色,帮助我们处理用户输入并实时更新建议列表。 1. **基本原理**:自动补全功能基于用户的输入动态生成建议列表。当用户在搜索框中键入字符时,jQuery监听键盘事件,...

    java与jQuery整合ajax仿googleSuggest自动补全实例

    本实例将探讨如何将这两者整合,通过AJAX技术实现一个仿Google Suggest的自动补全功能,该功能通常用于输入框中,为用户提供动态搜索建议。我们将详细解析这个实例中的各个组成部分。 首先,`index.jsp`是用户界面...

    Jquery实现仿搜索引擎文本框自动补全插件

    **jQuery 实现仿搜索引擎文本框自动补全插件** 在 Web 开发中,为了提高用户体验,经常会在输入框中使用自动补全(Autocomplete)功能,就像我们在使用搜索引擎时,输入关键词后会看到下拉的建议列表。jQuery 是一...

    jquery自动补全示例。包括后台,中文乱码解决JS

    jQuery 自动补全插件是一种常见的前端开发工具,它为用户在输入框中提供动态建议,提高了用户体验,尤其在处理大量数据输入时显得尤为重要。本示例将涵盖如何使用jQuery实现自动补全功能,包括解决中文乱码问题以及...

    仿谷歌百度实现输入自动补全功能

    总的来说,仿谷歌百度实现输入自动补全功能是一个涉及前端、后端以及算法设计的综合性项目。通过这个项目,你可以深入理解Web交互设计,提升JavaScript编程能力,并掌握如何构建高效的API接口。同时,这也是一个很好...

    jQuery百度搜索自动补全插件.zip

    jQuery百度搜索自动补全插件基于流行的JavaScript库jQuery和typeahead.js实现,为网页上的搜索框提供了高效且用户友好的自动补全功能。这个插件主要用于提升用户体验,尤其是在需要处理大量数据并希望用户能快速找到...

    人工智能-项目实践-搜索引擎-实现仿搜索引擎文本框自动补全Jquery插件

    在本文中,我们将深入探讨如何使用Jquery实现一个仿搜索引擎文本框自动补全功能,这是一个在Web开发中常见的用户体验优化工具。此项目实践基于人工智能的背景,利用JavaScript库Jquery来提升用户在搜索框中的输入...

    .net+jquery仿google智能提示

    描述中提到的"jquery.autocomplete.min.js插件 仿google实现自动补全"是指使用jQuery UI库中的Autocomplete组件,这是一个轻量级的插件,用于实现文本输入框的自动补全功能。Google的搜索框就具有这种特性,当用户在...

    jQuery仿百度搜索下拉框自动补全代码插件

    **jQuery仿百度搜索下拉框自动补全代码插件** 在网页开发中,为了提供用户友好的搜索体验,经常会使用到自动补全功能,就像百度搜索引擎那样。这种功能可以极大地提高用户输入效率,减少用户的输入错误,提升用户...

    jQuery实现自动补全功能

    在提供的压缩包文件"GoogleSuggest"中,可能包含了一个关于谷歌搜索建议的示例,它展示了如何使用jQuery UI Autocomplete来模拟谷歌搜索的自动补全效果。通过分析和学习这个示例,你可以更深入地理解如何与服务器...

    一个仿百度、Google、谷歌搜索引擎自动补全

    在本项目中,我们将讨论如何实现一个仿百度、Google、谷歌的搜索引擎自动补全功能。 首先,自动补全的核心在于关键词匹配算法。常见的算法有Trie树(字典树)、Levenshtein距离(编辑距离)和基于TF-IDF的文本...

    自动补全以及jquery相关案例和验证码

    自动补全以及jquery相关案例和验证码

    jquery自动补全插件

    **jQuery自动补全插件详解** 在Web开发中,用户输入常常是交互体验的重要环节,为了提高用户体验,很多网站和应用引入了自动补全(Autocomplete)功能。jQuery作为一个广泛使用的JavaScript库,提供了丰富的插件...

    仿搜索引擎文本自动补全

    总的来说,使用jQuery实现仿搜索引擎文本自动补全涉及到了前端开发的多个方面,包括事件处理、DOM操作、Ajax通信以及性能优化等,是提升用户体验的重要手段。通过熟练掌握这些技术,开发者可以构建更加互动和用户...

Global site tag (gtag.js) - Google Analytics