(本文转自:http://daishuanglong.iteye.com/blog/788199)
- 1.服务器端代码:
-
- (1)AutoCompleteServlet.java源代码:
- Java代码
- package servlet;
-
- import java.io.IOException;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
-
-
-
-
- public class AutoCompleteServlet extends HttpServlet {
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- String word = request.getParameter("word");
-
- request.setAttribute("word", word);
-
- request.getRequestDispatcher("wordxml.jsp").forward(request, response);
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doGet(request, response);
- }
- }
-
- package servlet;
-
- import java.io.IOException;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
-
-
-
-
- public class AutoCompleteServlet extends HttpServlet {
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- String word = request.getParameter("word");
-
- request.setAttribute("word", word);
-
- request.getRequestDispatcher("wordxml.jsp").forward(request, response);
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doGet(request, response);
- }
- }
-
- (2)wordxml.jsp源代码:
- Jsp代码
- <!-- 与传统应用的视图层不同,这个jsp返回的是xml的数据,因此contentType的值是text/xml -->
- <%@ page import="java.util.*" contentType="text/xml; charset=UTF-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
- <!-- 返回xml数据的"视图层"暂时不做任何逻辑,先将所有单词都返回,
- 待前后台应用可以协作之后,再限制返回的内容 -->
- <%
-
- String word = (String)request.getAttribute("word");
- String[] words = {"absolute", "anyone", "anything", "apple", "abandon", "breach", "break", "boolean"};
- request.setAttribute("list", Arrays.asList(words));
- %>
- <words>
- <c:forEach items="${list}" var="aWord">
- <c:if test="${fn:startsWith(aWord, word)}">
- <word><c:out value="${aWord}"></c:out></word>
- </c:if>
- </c:forEach>
- </words>
-
- <!-- 与传统应用的视图层不同,这个jsp返回的是xml的数据,因此contentType的值是text/xml -->
- <%@ page import="java.util.*" contentType="text/xml; charset=UTF-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
- <!-- 返回xml数据的"视图层"暂时不做任何逻辑,先将所有单词都返回,
- 待前后台应用可以协作之后,再限制返回的内容 -->
- <%
-
- String word = (String)request.getAttribute("word");
- String[] words = {"absolute", "anyone", "anything", "apple", "abandon", "breach", "break", "boolean"};
- request.setAttribute("list", Arrays.asList(words));
- %>
- <words>
- <c:forEach items="${list}" var="aWord">
- <c:if test="${fn:startsWith(aWord, word)}">
- <word><c:out value="${aWord}"></c:out></word>
- </c:if>
- </c:forEach>
- </words>
- 2.客户端程序
-
- (1)JQueryAuto.html源代码
- Html代码
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
- <script type="text/javascript" src="js/jqueryauto.js"></script>
- <title>JQuery实例5:仿Google Suggest自动补齐</title>
- </head>
-
- <body>
- 自动补完实例:<input type="text" id="word" />
- <input type="button" value="提示" /><br />
- <div id="auto"></div>
- </body>
- </html>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
- <script type="text/javascript" src="js/jqueryauto.js"></script>
- <title>JQuery实例5:仿Google Suggest自动补齐</title>
- </head>
-
- <body>
- 自动补完实例:<input type="text" id="word" />
- <input type="button" value="提示" /><br />
- <div id="auto"></div>
- </body>
- </html>
- (2)jqueryauto.js源代码:
- Js代码
- $(document).ready(function() {
-
- var autoNode = $("#auto");
- var wordInput = $("#word");
-
- var highlightindex = -1;
- var timeoutId;
-
-
-
- var wordInputOffset = wordInput.offset();
-
- autoNode.hide().css("border", "1px black solid").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;
-
-
- if (keyCode >= 65 && keyCode <= 90 || keyCode == 8 || keyCode == 48){
-
- var wordText = wordInput.val();
-
- if (wordText != "") {
-
- clearTimeout(timeoutId);
- timeoutId = setTimeout(function() {
- $.post("AutoCompleteServlet", {word:wordText}, function(data) {
-
- var jqueryObj = $(data);
-
- var wordNodes = jqueryObj.find("word");
-
- autoNode.html("");
-
- wordNodes.each(function(i) {
-
- var wordNode = $(this);
-
-
- var newDivNode = $("<div>");
- newDivNode.html(wordNode.text()).appendTo(autoNode);
-
- newDivNode.mouseover(function() {
-
- if (highlightindex != -1) {
- autoNode.children("div").eq(highlightindex)
- .css("background-color", "white");
- }
-
- highlightindex = i;
-
- $(this).css("background-color", "red");
- });
-
- newDivNode.mouseout(function() {
-
- $(this).css("background-color", "white");
- });
-
- newDivNode.click(function() {
-
- var comText = autoNode.hide().children("div").eq(highlightindex).text();
- highlightindex = -1;
-
- $("#word").val(comText);
- });
- });
-
- if(wordNodes.length > 0) {
- autoNode.show();
- } else {
- autoNode.hide();
- }
- },"xml");
- }, 200);
-
- } else {
- autoNode.hide();
-
- highlightindex = -1;
- }
- } else if (keyCode == 38 || keyCode == 40) {
-
- if (keyCode == 38) {
-
- var autoNodes = autoNode.children("div");
- if (highlightindex != -1) {
-
- autoNodes.eq(highlightindex).css("background-color", "white");
- highlightindex --;
- }
- if (highlightindex == -1) {
-
- highlightindex = autoNodes.length -1;
- }
-
- autoNodes.eq(highlightindex).css("background-color", "red");
- } else {
-
- var autoNodes = autoNode.children("div");
- if (highlightindex != -1) {
-
- autoNodes.eq(highlightindex).css("background-color", "white");
- }
- highlightindex ++;
- if (highlightindex == autoNodes.length) {
-
- highlightindex = 0;
- }
-
- autoNodes.eq(highlightindex).css("background-color", "red");
- }
-
- } else if (keyCode == 13) {
-
-
- if (highlightindex != -1) {
-
- var comText = autoNode.hide().children("div").eq(highlightindex).text();
- highlightindex = -1;
-
- $("#word").val(comText);
- } else {
-
- alert("文本框中的[" + wordInput.val() + "]被提交了");
- autoNode.hide();
-
- wordInput.get(0).blur();
- }
- }
- });
-
- $("input[type='button']").click(function() {
- alert("文本框中的[" + wordInput.val() + "]被提交了");
- });
-
- });
-
- $(document).ready(function() {
-
- var autoNode = $("#auto");
- var wordInput = $("#word");
-
- var highlightindex = -1;
- var timeoutId;
-
-
-
- var wordInputOffset = wordInput.offset();
-
- autoNode.hide().css("border", "1px black solid").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;
-
-
- if (keyCode >= 65 && keyCode <= 90 || keyCode == 8 || keyCode == 48){
-
- var wordText = wordInput.val();
-
- if (wordText != "") {
-
- clearTimeout(timeoutId);
- timeoutId = setTimeout(function() {
- $.post("AutoCompleteServlet", {word:wordText}, function(data) {
-
- var jqueryObj = $(data);
-
- var wordNodes = jqueryObj.find("word");
-
- autoNode.html("");
-
- wordNodes.each(function(i) {
-
- var wordNode = $(this);
-
-
- var newDivNode = $("<div>");
- newDivNode.html(wordNode.text()).appendTo(autoNode);
-
- newDivNode.mouseover(function() {
-
- if (highlightindex != -1) {
- autoNode.children("div").eq(highlightindex)
- .css("background-color", "white");
- }
-
- highlightindex = i;
-
- $(this).css("background-color", "red");
- });
-
- newDivNode.mouseout(function() {
-
- $(this).css("background-color", "white");
- });
-
- newDivNode.click(function() {
-
- var comText = autoNode.hide().children("div").eq(highlightindex).text();
- highlightindex = -1;
-
- $("#word").val(comText);
- });
- });
-
- if(wordNodes.length > 0) {
- autoNode.show();
- } else {
- autoNode.hide();
- }
- },"xml");
- }, 200);
-
- } else {
- autoNode.hide();
-
- highlightindex = -1;
- }
- } else if (keyCode == 38 || keyCode == 40) {
-
- if (keyCode == 38) {
-
- var autoNodes = autoNode.children("div");
- if (highlightindex != -1) {
-
- autoNodes.eq(highlightindex).css("background-color", "white");
- highlightindex --;
- }
- if (highlightindex == -1) {
-
- highlightindex = autoNodes.length -1;
- }
-
- autoNodes.eq(highlightindex).css("background-color", "red");
- } else {
-
- var autoNodes = autoNode.children("div");
- if (highlightindex != -1) {
-
- autoNodes.eq(highlightindex).css("background-color", "white");
- }
- highlightindex ++;
- if (highlightindex == autoNodes.length) {
-
- highlightindex = 0;
- }
-
- autoNodes.eq(highlightindex).css("background-color", "red");
- }
-
- } else if (keyCode == 13) {
-
-
- if (highlightindex != -1) {
-
- var comText = autoNode.hide().children("div").eq(highlightindex).text();
- highlightindex = -1;
-
- $("#word").val(comText);
- } else {
-
- alert("文本框中的[" + wordInput.val() + "]被提交了");
- autoNode.hide();
-
- wordInput.get(0).blur();
- }
- }
- });
-
- $("input[type='button']").click(function() {
- alert("文本框中的[" + wordInput.val() + "]被提交了");
- });
-
- });
-
- 好了,现在所有的代码已经完成,看一下运行效果吧。
分享到:
相关推荐
jQuery自动补全功能主要依赖于jQuery UI库中的Autocomplete组件。它监听用户在搜索框中的输入事件,当用户输入达到一定字符数量(通常是1个或以上)时,触发异步请求,向服务器发送查询请求。服务器返回匹配结果,...
jQuery自动补全是一种常见的前端开发技术,用于提升用户体验,特别是在搜索框或输入字段中,它能够根据用户输入的内容实时提供预测建议。这个功能在许多网站和应用中都有所应用,如百度搜索、谷歌搜索等。它能够帮助...
本项目"jQuery自动补全筛选input代码"是利用jQuery实现的一个功能,它允许用户在input输入框中输入关键词时,自动筛选并显示匹配的信息。这种功能在网页搜索、表单填充等场景下非常实用,提高了用户体验。 首先,...
**jQuery自动补全插件详解** jQuery 自动补全插件是一种常见的前端开发工具,它为用户在输入框中提供动态建议,提高了用户体验,尤其在处理大量数据输入时显得尤为重要。本示例将涵盖如何使用jQuery实现自动补全...
**jQuery 自动补全插件详解** 在网页开发中,为用户提供自动补全功能是一种常见的交互设计,可以提高用户体验,减少用户输入错误。jQuery 自动补全插件(jQuery UI Autocomplete)是实现这一功能的强大工具,它基于...
**jQuery自动补全插件详解** 在Web开发中,用户输入常常是交互体验的重要环节,为了提高用户体验,很多网站和应用引入了自动补全(Autocomplete)功能。jQuery作为一个广泛使用的JavaScript库,提供了丰富的插件...
《jQuery自动补全功能详解》 在Web开发中,用户输入常常是交互的重要部分,而自动补全(Autocomplete)功能则能极大地提高用户体验,减少用户输入错误,提升操作效率。jQuery库以其轻量级、易用性以及丰富的插件...
**jQuery自动补全插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。其中,自动补全功能是一项常见的需求,它可以在用户输入时提供预测建议,大大加快输入速度,降低错误率。jQuery...
Asp.net与jQuery结合实现的自动补全功能(autocomplete)是一种常见的前端交互设计,它能够极大地提高用户在输入框中的输入效率。此功能通常应用于搜索框、表单填充等场景,为用户提供动态提示,根据他们输入的部分...
《jQuery自动补全功能详解与应用实践》 在Web开发中,用户输入的交互体验往往对网站或应用程序的用户体验有着重大影响。为了提高用户输入效率和便捷性,开发者常常会引入自动补全(AutoComplete)功能。jQuery库以...
本示例为jquery自动补全的示例,其中包括两部分,第一是在本地构造的json格式的数据供自动补全用,第二是从后台将数据处理成json格式,jquery通过ajax请求后台的json数据,其中还有处理autocomplete不支持中文的方法...
**jQuery自动补全插件详解** 在Web开发中,用户界面的交互性和便捷性是提升用户体验的关键因素之一。jQuery库以其简洁的API和强大的功能深受开发者喜爱,而jQuery的自动补全插件则是提高输入效率、优化用户体验的...
jQuery自动补全效果是一种常见的前端交互功能,常用于搜索框、表单输入等场景,能够为用户提供便捷的建议列表,提高用户体验。这个功能基于流行的JavaScript库jQuery实现,它简化了DOM操作,使得创建动态和交互式的...
虽然jQuery本身并不直接提供代码补全功能,但很多编辑器和IDE都有针对jQuery的插件或扩展,提供jQuery函数和选择器的自动补全。例如,VSCode中的jQuery IntelliSense插件就是一个很好的例子。 将PHP和jQuery结合...
在本示例中,我们将探讨如何使用jQuery实现一个自动补全功能,这在网页表单输入或者搜索框中非常常见,可以提供用户友好的交互体验。 首先,"jquery 自动补全 例子"是指使用jQuery库来创建一个自动补全的功能,这种...
**jQuery自动补全插件详解:仿百度自动提示功能** 在网页开发中,为了提高用户体验,经常需要实现一种类似于搜索引擎的自动补全功能,让用户在输入框中输入内容时能够实时得到相关的建议或提示。jQuery作为一款广泛...
jQuery自动补全是一种常见的前端开发功能,用于提升用户体验,特别是在输入框中进行搜索或填写信息时。这个功能允许用户在输入过程中快速选择匹配的建议项,常见于搜索引擎、表单填充和其他需要动态提示的场景。在...
标题中的“notepad++ css html js jquery 自动补全提示插件”指的是Notepad++文本编辑器中的一个增强工具,这个插件专为提升CSS、HTML、JavaScript和jQuery的编码效率而设计。Notepad++是一款免费且开源的代码编辑器...