`

jquery的suggest

阅读更多
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;

/**
 * 接收用户端请求
 */
public class AutoComplete extends HttpServlet{
    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        //表示页面传过来的字符串,用于和服务器端的单词进行匹配
        String word = httpServletRequest.getParameter("word");
        //将字符串保存到request对象中
        httpServletRequest.setAttribute("word",word);
        //将请求转发给视图层(ajax中,这个所谓的视图层不是返回页面,只返回数据,所以可以称作数据层)
        httpServletRequest.getRequestDispatcher("wordxml.jsp")
                .forward(httpServletRequest, httpServletResponse);
    }

    protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        doGet(httpServletRequest, httpServletResponse);
    }
}


<!--与传统视图不同,这个jsp返回是xml数据-->
<%@ page contentType="text/xml;charset=UTF-8" language="java" %>
<!--返回xml数据的视图层,暂时不做判断,将所有单词都返回-->
<%
    //页面传送参数
    String word = (String)request.getAttribute("word");
%>
<words>
    <%if("absolute".startsWith(word)){%>
        <word>absolute</word>
    <%}%>
    <%if("anyone".startsWith(word)){%>
        <word>anyone</word>
    <%}%>
    <%if("anything".startsWith(word)){%>
        <word>anything</word>
    <%}%>
    <%if("abandon".startsWith(word)){%>
        <word>abandon</word>
    <%}%>
    <%if("breach".startsWith(word)){%>
        <word>breach</word>
    <%}%>
    <%if("break".startsWith(word)){%>
        <word>break</word>
    <%}%>
    <%if("boolean".startsWith(word)){%>
        <word>boolean</word>
    <%}%>
</words>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>jquery示例:suggest</title>
    <script type="text/javascript" src="jslib/jquery.js"></script>
    <script type="text/javascript" src="jslib/jqueryauto.js"></script>
</head>
<body>
    jquery示例:suggest<input type="text" id="word"/>
    <input type="button" value="提交"/><br/> <br/>
    <div id="auto"></div>
</body>
</html>

//表示当前高亮的节点
var highlightindex = -1;
var timoutId;
//自动补全框最开始应该隐藏
$(document).ready(function(){
    var wordInput = $("#word");
    var wordInputOffset = wordInput.offset();
    //自动补全框最开始应该隐藏起来
    $("#auto").hide().css("border","1px solid black").css("position","absolute")
            .css("top",wordInputOffset.top+wordInput.height()+5+"px")
            .css("left",wordInputOffset.left+"px").width(wordInput.width()+2);

    //给文本框添加键盘按下并弹起事件
    wordInput.keyup(function(event){
        //处理文本框中的键盘事件
        var myEvent = event||window.event;
        var keyCode = myEvent.keyCode;
        var autoNode = $("#auto");
        //如果输入的是字母,应该将文本框中的最新信息发送给服务器
        //如果输入的是退格或删除键,也将文本框的最新信息发送到服务器
        if(keyCode>=65 && keyCode<=90 ||keyCode==8 || keyCode==46){

            //1 首先获取文本框中的内容
            var wordText =$("#word").val();
            if(wordText!=""){

                //2 将文本框中的内容发送到服务器
                //对上次未完成的延时操作进行取消
                clearTimeout(timoutId);
                //对于服务器进行交互延迟500ms,避免打字过快造成不必要的压力
                timoutId = setTimeout(function(){
                    $.post("AutoComplete",{word:wordText},function(data){
                    //将dom对象data转换成jquery对象
                    var jqueryObj = $(data);
                    //找到所有word节点
                    var wordNodes = jqueryObj.find("word");
                    //遍历所有的word节点,取出单词内容,将单词内容添加到弹出框中

                    //将原先内容清空
                    autoNode.html("");
                    wordNodes.each(function(i){
                        //获取单词内容
                        var wordNode = $(this);
                        //新建div节点,将单词内容加入到新节点
                        //$("<div>").html(wordNode.text());
                        //将新建节点加入到弹出框的节点中
                        var newDivNode = $("<div>").attr("id",i);
                        newDivNode.html(wordNode.text()).appendTo(autoNode);
                        //增加鼠标进入事件,高亮节点
                        newDivNode.mouseover(function(){
                            //将原来高亮节点取消高亮
                            if(highlightindex !=-1){
                                $("#auto").children("div").eq(highlightindex)
                                        .css("background-color","white");
                            }
                            highlightindex = $(this).attr("id");
                            $(this).css("background-color","red");
                        });
                        //鼠标移出事件,取消当前节点的高亮
                        newDivNode.mouseout(function(){
                            //将原来高亮节点取消高亮
                            $(this).css("background-color","white");
                        });
                        //增加鼠标点击进行补全
                        newDivNode.click(function(){
                            //取出高亮节点的内容
                            var comText = $(this).text();
                            highlightindex = -1;
                            //文本框的内容变为高亮节点的内容
                            $("#word").val(comText);
                            autoNode.hide();
                        });

                        });
                        //如果服务器端有数据显示弹出框
                        if(wordNodes.length > 0){
                            autoNode.show();
                        }else{
                            autoNode.hide();
                            highlightindex = -1;
                        }
                    },"xml");
                },500);

            }else{
                autoNode.hide();
                highlightindex = -1;
            }
        }else if(keyCode ==38 || keyCode == 40){
            //如果输入的是向上38向下40案件
            if(keyCode==38){
                //向上
                var autoNodes = $("#auto").children("div");
                if(highlightindex !=-1){
                    //原来存在高亮,变为白色
                    autoNodes.eq(highlightindex).css("background-color","white");
                    highlightindex--;
                }else{
                    highlightindex = autoNodes.length - 1;
                }
                
                if(highlightindex == -1){
                    //如果修改索引值后为-1,将索引值至为最后
                    highlightindex = autoNodes.length - 1;
                }
                //让高亮的内容至为红色
                autoNodes.eq(highlightindex).css("background-color","red");
            }else{
                //向下
                var autoNodes = $("#auto").children("div");
                if(highlightindex !=-1){
                    //原来存在高亮,变为白色
                    autoNodes.eq(highlightindex).css("background-color","white");
                }
                highlightindex++;
                if(highlightindex == autoNodes.length){
                    //如果修改索引值后为-1,将索引值至为最后
                    highlightindex = 0;
                }
                //让高亮的内容至为红色
                autoNodes.eq(highlightindex).css("background-color","red");

            }
        }else if(keyCode == 13){
            //如果是回车

            //下拉框有高亮内容
            if(highlightindex !=-1){
                //取出高亮节点的内容
                var comText = $("#auto").hide().children("div").eq(highlightindex).text();
                highlightindex = -1;
                //文本框的内容变为高亮节点的内容
                $("#word").val(comText);
            }else{
                //下拉框没有高亮内容
                alert("文本框中的["+$("#word").val()+"]被提交了");
                $("#auto").hide();
                //让文本框失去焦点
                $("#word").get(0).blur();
            }
        }
    });

    //给按钮添加事件,表示文本框的提交动作
    $("input[type='button']").click(function(){
        alert("文本框中的["+$("#word").val()+"]被提交了");
    });
});
分享到:
评论

相关推荐

    jquery suggest插件

    **jQuery Suggest 插件详解** jQuery Suggest 插件是一种强大的前端开发工具,它能够为用户在输入框中提供实时的建议和匹配,类似于百度和Google搜索的自动补全功能。这种功能对于提高用户体验、简化用户输入过程...

    jquery suggest 自动补全插件演示

    **jQuery Suggest 插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。jQuery Suggest插件就是这样一个工具,它为网页中的输入框提供了自动补全功能,使得用户在输入时能快速找到并...

    jquery 自动完成输入插件

    1. 引入资源:首先,需要在页面中引入jQuery库和jQuery Suggest插件的js文件,如:`&lt;script src="jquery.js"&gt;&lt;/script&gt;` 和 `&lt;script src="jquery_suggest.js"&gt;&lt;/script&gt;`。 2. 初始化插件:接着,为需要启用自动...

    jquery-suggest:jQuery的建议

    jQuery-Suggest jQuery-Suggest 是一个基于 jQuery 的 suggest 组件,它主要为 PC 端的搜索框提供建议词条。 为什么要做这个组件 我曾经做过一个基于 Zepto 简洁实用的 suggest 组件:。 这个组件稍微改造即可在 ...

    sggest jquery插件

    **jQuery Suggest插件详解** 在网页开发中,jQuery库以其简洁易用的API和丰富的插件库,深受开发者喜爱。"sggest jQuery插件"是其中之一,它模仿了Google的自动建议功能,能为输入框提供实时的下拉建议列表,提升...

    JQuery插件Suggest,实现类百度智能提示

    JQuery插件Suggest来做那些机票预订网站中的输入智能提示功能,这个功能对于用户体验性来说,挺不错的,用于实现类似百度的智能提示功能也是一个不错的选择。

    240多个jQuery UI插件

    - **jQuery Suggest**: 提供自动完成建议。 - **jQuery Autocomplete**: 常见的自动补全插件。 - **jQuery Autocomplete Mod**: 增强版的自动补全插件。 - **jQuery Autocomplete by AjaxDaddy**: 基于Ajax实现...

    基于JQUERY的SUGGEST效果,自己写的

    基于JQUERY的SUGGEST效果,自己写的

    240多个jQuery插件

    1. jQuery Suggest:自动补全建议。 2. jQuery Autocomplete:自动完成。 3. jQuery Autocomplete Mod:改进版自动完成。 4. jQuery Autocompleter:快速搜索建议。 以上只列举了部分jQuery插件,实际应用中还有更...

    JQuery应用实例学习(强烈推荐)转载.doc

    搜索功能方面,jQuery Suggest 和 jQuery Autocomplete 等插件可以实现自动补全和建议功能。 总的来说,jQuery 以其简洁的语法和强大的功能,大大降低了 JavaScript 开发的门槛,使得开发者能够更加专注于网页的...

    经典海量jQuery插件 大家可以收藏一下

    - 搜索插件(SearchPlugins):例如jQuerySuggest和jQueryAutocomplete,用于实现自动完成功能。 - 编辑器(InlineEditEditors)插件:这类插件允许用户在页面上直接编辑内容,如jTagEditor和WYMeditor等。 3. 使用...

    240多个jQuery插件.doc

    - **jQuery Suggest**: 下拉式自动补全搜索插件。 - **jQuery Autocomplete**: 自动完成搜索插件。 - **jQuery Autocomplete Mod**: 改进版自动完成搜索插件。 - **jQuery Autocomplete by AjaxDaddy**: 基于Ajax的...

    海量经典的jQuery插件集合

    jQuery Suggest** - **功能概述**:提供自动补全功能。 - **应用场景**:适用于需要自动补全输入的场景。 **2. jQuery Autocomplete** - **功能概述**:实现输入框自动补全。 - **应用场景**:适用于几乎所有需要...

    jquery插件表

    - **jQuery Suggest**:实现自动补全功能。 - **jQuery Autocomplete**:Google风格的自动完成输入框。 - **jQuery Autocomplete Mod**:jQuery Autocomplete的修改版。 - **jQuery Autocomplete by AjaxDaddy**:...

    jQuery列表 欢迎下载

    - **jQuerySuggest**: 提供自动补全搜索建议功能。 - **jQueryAutocomplete**: 自动完成输入,适用于地址、姓名等字段。 - **quickSearchjQueryPlugin**: 快速搜索插件,能够即时响应用户的输入。 ### 7. 内联编辑...

    JQuerry 插件介绍

    - jQuery Suggest:提供自动补全建议功能。 - jQuery Autocomplete:自动完成输入框插件。 - jQuery Autocomplete Mod:改进版的自动完成插件。 - jQuery Autocomplete by AjaxDaddy:基于AJAX的自动完成。 ...

    jquery练习的例子,仿真google suggest

    jquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,仿真google suggestjquery练习的例子,...

    Google Suggest,jquery autocomplete,自动完成示例

    结合描述中的博客链接,我们可以推断这篇博客可能详细介绍了如何将Google Suggest的原理应用到jQuery Autocomplete插件中,为用户提供类似谷歌搜索那样的自动完成体验。博客作者可能分享了实现这一功能的步骤、代码...

Global site tag (gtag.js) - Google Analytics