zoukankan      html  css  js  c++  java
  • google,baidu suggest

    //定义全局变量
    var hilgindex = -1;
    var timeTmid;
    $(document).ready(function () {
        //先将DIV隐藏
        var wordInput = $("#word");
        var wordInputOffset = wordInput.offset();
        $("#auto").hide().css("border", "1px black solid").css("position", "absolute")
                .css("top", wordInputOffset.top + wordInput.height() + 1 + "px")
                .css("left", wordInputOffset.left + "px").width(wordInput.width())
                .css("font-size","14px").css("z-index","100").css("background-color","white");
        //给文本框加键盘按下弹起事件
        wordInput.keyup(function(event) {
            //处理键盘事件 重点
            //获取键盘按下的键
            var myEvent = event || window.event;
            var keyCode = myEvent.keyCode;
            //如果输入的是字母,应该将文本框最新的内容发送给服务器
            //如果输入的是退格键 或 是DEL键 也应该将文本框最新的内容发送给服务器
            if (keyCode >= 65 && keyCode <= 90 || keyCode == 8 || keyCode == 46) {
                //1先获取文本狂的内容 并处理中文乱码问题  两次处理之后 能够在不同环境下 处理中文乱码问题
                var wordText =$("#word").css("position", "relative").val();
                var autoNode = $("#auto");
                //2将文本框的内容发送到服务器
                if (wordText != "") {
                    //清除上次未完成的延时操作
                    clearTimeout(timeTmid);
                    //d对服务端要延迟500ms 避免快速打字造成多次请求服务器
                    timeTmid = setTimeout(function() {
                        $.post("/xddshopping/Product?method=test", {word:wordText}, function(data) {
                            //将dom对象data转换成JQuery的对象
                            var jqueryObj = $(data);
                            //找到所有的word节点
                            var wordNodes = jqueryObj.find("word");
                            // alert(wordNodes+"=========")
                            //遍历所有word节点 取出数据,然后将数据填充到弹出框

                            //这里要清空原内容
                            autoNode.html("");
                            wordNodes.each(function(i) {
                                //取出数据
                                var wordNode = $(this);
                                //新建div节点 将数据添加到节点中
                                //将新建的节点添加到弹出框中
                                var newDivNode = $("<div>").css("margin-top","5px").css("text-align","left").attr("id", i);
                                newDivNode.html(wordNode.text()).appendTo(autoNode);
                                //增加鼠标事件  进入改变背景颜色
                                newDivNode.mouseover(function() {
                                    //将原来的被选择的取消
                                    if (hilgindex != -1) {
                                        $("#auto").children("div").eq(hilgindex).css("background-color", "white")
                                    }
                                    //记录新的被选中
                                    hilgindex = $(this).attr("id");
                                    $(this).css("background-color", "gray");
                                });
                                //鼠标移出事件
                                newDivNode.mouseout(function() {
                                    //取消被选中的
                                    $(this).css("background-color", "white");
                                });
                                //增加鼠标点击事件
                                newDivNode.click(function() {
                                    //取出被选中的内容
                                    var comText = $(this).text();
                                    $("#auto").hide();
                                    hilgindex = -1;
                                    //w文本狂的内容要变成所选的内容
                                    $("#word").val(comText);
                                });


                            });
                            if (wordNodes.length > 0) {
                                autoNode.show();
                            } else {
                                //当弹出框隐藏式  被选择的内容应该为-1
                                autoNode.hide();
                                hilgindex = -1;
                            }

                        }, "xml");
                    }, 500)
                } else {
                    autoNode.hide();
                    hilgindex = -1;
                }
            } else if (keyCode == 38) {
                //如果按下的是向上键 38
                var autoNodes = $("#auto").children("div")
                if (hilgindex != -1) {
                    //如果没被选中 将内容的Div给白色
                    autoNodes.eq(hilgindex).css("background-color", "white");
                    hilgindex--;
                } else {
                    hilgindex = autoNodes.length - 1;
                }
                if (hilgindex == -1) {
                    //如果到顶端 或到最下端  就-1
                    hilgindex = autoNodes.length - 1;
                }
                // 如果 正常  将被选择的的内容背景给灰色
                autoNodes.eq(hilgindex).css("background-color", "gray")
                 var comText = $("#auto").children("div").eq(hilgindex).text();
                $("#word").val(comText)
            } else if (keyCode == 40) {
                //向下的建 40
                var autoNodes = $("#auto").children("div")
                if (hilgindex != -1) {
                    //如果没被选中 将内容的Div给白色
                    autoNodes.eq(hilgindex).css("background-color", "white");
                }
                hilgindex++;
                if (hilgindex == autoNodes.length) {
                    //如果到顶端 或到最下端  就-1
                    hilgindex = 0;
                }
                // 如果 正常  将被选择的的内容背景给灰色
                autoNodes.eq(hilgindex).css("background-color", "gray")
                var comText = $("#auto").children("div").eq(hilgindex).text();
                $("#word").val(comText)
            } else if (keyCode == 13) {
                //如果输入的是回车

                //下拉框有内容被选择
                if (hilgindex != -1) {
                    //取出被选中的内容
                    var comText = $("#auto").hide().children("div").eq(hilgindex).text();
                    hilgindex = -1;
                    //w文本狂的内容要变成所选的内容
                    $("#word").val(comText)
                } else {
                    //w文本狂的内容要变成所选的内容
                    alert("文本框的的值[" + $("#word").val() + "]被提交了")
                    $("#auto").hide();
                    //让文本框失去焦点
                    $("#word").get(0).blur();
                }
            }
        });
        //给按钮一个事件
        $("input[name='secth']").click(function() {
           var comText=encodeURI($("#word").val());
           //alert(comText)
           window.location.href='/xddshopping/Reveal?method=proname&pname='+comText;
        });
    });

    2.autoxml.jsp文件内容 在这个文件中,我们只把他作为数据中转

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"
     contentType="text/xml; charset=utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
    <!--返回xml数据的-->
    <words>
     <c:forEach items="${requestScope.word}" var="pro">
     <word>${pro}</word>
    </c:forEach>
    </words>

    3.servlet的类调用业务类的方法

    public void test(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
      response.setHeader("Cache-Control", "no-cache");
      response.setContentType("text/xml;charset=utf-8");
      PrintWriter out = response.getWriter();
      
          String word=request.getParameter("word");
             PageUtil pageUtil=new PageUtil();
             pageUtil.setPageno(1);
             pageUtil.setPagesize(20);
             word=StringUtil.concert(word);
       ProductBiz.search(pageUtil, " pletter like '"+word+"%' or  pname like '"+word+"%'");
       
       List<ProductBean> list = pageUtil.getList();
       List pro=new ArrayList();
       String src=p.getPname();
       pro.add(src);
           
       }
       request.setAttribute("word",pro);
            request.getRequestDispatcher("/xml/xmlauto.jsp").forward(request,response);
     }

  • 相关阅读:
    Vue-cli3 项目配置 Vue.config.js( 代替vue-cli2 build config)
    vue-cli 3 脚手架搭建(create)
    动态设置微信小程序 navigationBarTitle 的值
    微信小程序 获取cookie 以及设置 cookie
    微信小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题
    JavaScript.Array.some() 方法用法
    vue 路由传参中刷新页面参数丢失 及传参的几种方式?
    vue $router.push 传参的问题
    将博客搬至CSDN
    再见,2020
  • 原文地址:https://www.cnblogs.com/xianzuoqiaoqi/p/1736727.html
Copyright © 2011-2022 走看看