- 浏览: 36267 次
- 性别:
- 来自: 上海
文章分类
最新评论
比较简单的模拟,文本框输入CompanyName,然后
搜索SqlServer2000 里NorthWind数据库 Suppliers表的CompanyName字段,
然后实现自动完成
四个文件
搜索SqlServer2000 里NorthWind数据库 Suppliers表的CompanyName字段,
然后实现自动完成
四个文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>输入自动完成</title> <script language="javascript"> //输入信息的文本框 var txtInput; //下拉表当前选中项的索引 var currentIndex = -1; //初始化参数,和下拉表位置 function initPar() { txtInput = document.getElementById("txtCompanyName"); //设置下拉表 相对于 文本输入框的位置 setPosition(); } //设置下拉表 相对于 文本输入框的位置 function setPosition() { var width = txtInput.offsetWidth; var left = getLength("offsetLeft"); var top = getLength("offsetTop") + txtInput.offsetHeight; divContent.style.left = left + "px"; divContent.style.top = top + "px"; divContent.style.width = width + "px"; } //获取对应属性的长度 function getLength(attr) { var offset = 0; var item = txtInput; while (item) { offset += item[attr]; item = item.offsetParent; } return offset; } //自动完成 function autoComplete() { //如果按下 向上, 向下 或 回车 if (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13) { //选择当前项 selItemByKey(); } else //向服务器发送请求 { //如果值为空 if (txtInput.value == "") { divContent.style.display='none'; return; } //恢复下拉选择项为 -1 currentIndex = -1; //开始请求 requestObj = new ActiveXObject("Microsoft.XMLHTTP"); requestObj.onreadystatechange = displayResult; requestObj.open("POST", "AutoComplete.aspx?ts=" + new Date().toLocaleString(), true); requestObj.send(txtInput.value); } } //显示结果 function displayResult() { if (requestObj.readyState == 4) { showData(); divContent.style.display = ""; } } //显示服务器返回的结果 ,并形成下拉表 function showData() { //获取数据 var doc = new ActiveXObject("MSXML2.DOMDocument.3.0"); doc.loadXML(requestObj.responseText); //显示数据的xslt var docStyle = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); docStyle.async = false; docStyle.load("list.xslt"); var docTemplate = new ActiveXObject("MSXML2.XSLTemplate"); docTemplate.stylesheet = docStyle; //通过xslt转换xml数据 var processor = docTemplate.createProcessor(); processor.input = doc; processor.transform(); var res = processor.output; //显示转后后的结果 divContent.innerHTML = res; } //通过键盘选择下拉项 function selItemByKey() { //下拉表 var tbl = document.getElementById("tblContent"); if (!tbl) { return; } //下拉表的项数 var maxRow = tbl.rows.length; //向上 if (event.keyCode == 38 && currentIndex > 0) { currentIndex--; } //向下 else if (event.keyCode == 40 && currentIndex < maxRow-1) { currentIndex++; } //回车 else if (event.keyCode == 13) { selValue(); return; } clearColor(); txtInput.value = tbl.rows[currentIndex].innerText; //设置当前项背景颜色为blue 标记选中 tbl.rows[currentIndex].style.backgroundColor = "InfoBackground"; } //清除下拉项的背景颜色 function clearColor() { var tbl = document.getElementById("tblContent"); for (var i = 0; i < tbl.rows.length; i++) { tbl.rows[i].style.backgroundColor = ""; } } //选择下拉表中当前项的值 ,用于按回车或鼠标单击选中当前项的值 function selValue() { if (event.keyCode != 13) { var text = event.srcElement.innerText; txtInput.value = text; } initList(); } //文本框失去焦点时 设置下拉表可见性 function setDisplay() { //获取当前活动td的表格 if (document.activeElement.tagName == "TD") { var tbl = document.activeElement.parentElement.parentElement.parentElement; //如果不是下拉表,则隐藏 下拉表 if (tbl.id != "tblContent") { initList(); } return; } initList(); } function initList() { divContent.style.display='none'; divContent.innerHTML = ""; currentIndex = -1; } </script> </head> <body onload="initPar()"> CompanyName<input type="text" id="txtCompanyName" onkeyup="autoComplete()" onblur="setDisplay();" style="width:400px"/> <!-- 显示下拉表的div--> <div id="divContent" style="display:none; position:absolute; "> </div> </body> </html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AutoComplete.aspx.cs" Inherits="AJAXBaseHome.AutoComplete" %> AutoComplete.aspx.cs using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Collections; using System.IO; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.Configuration; namespace AJAXBaseHome { public partial class AutoComplete : System.Web.UI.Page { private static string conString = WebConfigurationManager.ConnectionStrings["myData"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { string input = GetInput(); Response.Write(GetCompanyName(input)); } //获取输入的字符串 private string GetInput() { Stream s = Request.InputStream; int count = 0; byte[] buffer = new byte[1024]; StringBuilder builder = new StringBuilder(); while ((count = s.Read(buffer, 0, 1024)) > 0) { builder.Append(Encoding.UTF8.GetString(buffer, 0, count)); } return builder.ToString(); } private string GetCompanyName(string input) { using (SqlConnection con = new SqlConnection(conString)) { SqlCommand command = new SqlCommand("select * from suppliers where CompanyName like @Name", con); command.Parameters.Add(new SqlParameter("@name", input + "%")); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet ds = new DataSet(); adapter.Fill(ds); return ds.GetXml(); } } } }
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="NewDataSet"> <table id="tblContent" style="background-color:GrayText"> <xsl:for-each select="Table"> <tr> <!--td中单击时选择当前值, 鼠标在上时更改行背景颜色,鼠标离开后清除背景颜色--> <td onclick="selValue()" style="cursor:hand" onmouseover="clearColor();this.parentElement.style.backgroundColor='InfoBackground'" onmouseout="clearColor()"> <xsl:value-of select="CompanyName"/> </td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
相关推荐
### AJAX实现Google输入自动完成简单模拟 #### 一、引言 随着Web应用程序的发展,用户体验变得越来越重要。其中,输入自动完成(Auto Complete)功能在许多网站上得到了广泛应用,能够极大地提升用户的输入效率和...
总结,运用Ajax和DIV+CSS实现谷歌自动完成关键词是一项综合性的技术挑战,涉及到前端的DOM操作、事件监听、Ajax通信以及CSS样式设计等多个方面。通过学习和实践,我们可以提升Web开发技能,为用户提供更加智能化和...
在模拟谷歌自动完成功能时,jQuery的异步特性尤为重要,因为我们需要在用户输入时实时从服务器获取建议数据。 1. **jQuery异步请求**:在用户输入过程中,我们可以监听`keyup`事件,当用户停止键入一段时间(例如...
本篇文章将详细解析如何利用AJAX技术实现类似百度和谷歌搜索框的自动填充功能,以及如何使用ASP.NET AJAX库中的AutoCompleteExtender控件。 首先,AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面...
这个“Ajax JSP 自动完成源代码”项目,就是利用纯JavaScript、Servlet技术,以及JSP(JavaServer Pages)来实现的,它模拟了Google搜索引擎的自动补全功能,无需依赖任何数据库,简化了系统的复杂性。 【Ajax技术...
本项目“模拟GoogleSuggest自动补全功能”旨在通过Ajax实现与Google搜索相似的实时建议效果,提高用户体验。下面我们将深入探讨Ajax的基础概念、工作原理以及如何应用于创建自动补全功能。 Ajax的核心思想是利用...
标题中的“模拟google自动补全功能”指的是在Web应用程序中实现类似于Google搜索框的自动补全功能。这种功能能够提高用户输入效率,提供便捷的搜索体验。它基于Ajax(Asynchronous JavaScript and XML)技术,利用...
本示例主要展示了如何使用纯JSP和Direct Web Remoting (DWR)技术来构建一个功能丰富的用户界面,其中包括三级联动下拉选择菜单、无刷新联动、用户存在性判断以及模拟Google搜索效果的功能。DWR是一种JavaScript库,...
总结来说,这个项目提供了一个基于HTML、CSS和jQuery实现的中文自动完成功能,模拟了Google和百度的搜索体验。它利用AJAX从服务器获取JSON数据,并根据用户的输入实时更新搜索建议,是一个实用的学习和参考案例。
Google的搜索框使用Ajax技术实现了用户输入时的自动完成功能,即用户在输入关键词时,系统会根据已输入的部分内容,快速返回匹配的搜索建议。 在压缩包文件名"dwrttest"中,"dwr"可能指的是Direct Web Remoting,这...
标题中的“模拟google自动提示”指的是创建一个功能类似于Google搜索框的自动补全功能,它能够在用户输入时提供预测性的搜索建议。这个功能通常用于提高用户体验,减少用户输入时间,并帮助用户更快地找到他们可能在...
在这个项目中,我们讨论的是如何使用Ajax来实现一个类似于Google搜索框的下拉提示功能。 在Google的搜索框中,当用户开始输入时,会弹出一个下拉菜单,显示与输入内容相关的搜索建议。这种功能可以提供快速导航、...
【模拟 GoogleSuggest 自动补全功能】 GoogleSuggest 是谷歌搜索引擎中的一项功能,当用户在搜索框中输入关键词时,系统会实时显示与输入内容相匹配的热门搜索建议。这个功能大大提高了用户的搜索效率,减少了误输...
Ajax模仿google提示输入框 使用说明 v1.8 本程序由飞飞asp乐园编写 ************************************************* 特别感谢: 一杯白开水 网友 的帮助 版本所提的修改建议 *********************************...
"模拟googlesugest自动补全功能 - ajax - 雨踪云迹.htm" 这个文件名暗示我们将会学习一个使用Ajax技术来实现Google自动补全功能的示例。Ajax(异步JavaScript和XML)允许网页在不刷新整个页面的情况下与服务器交换...
在本示例中,我们探讨的是如何使用jQuery实现一个类似于Google搜索框的自动完成功能,即用户在输入框中输入文字时,系统会根据输入自动显示相关建议。这个功能通过`autopoint.js`脚本实现,它依赖于jQuery库。 首先...
标题"仿百度、google的智能提示"指的是实现类似百度或Google搜索引擎在用户输入时自动提供搜索建议的功能。这种功能通常被称为自动补全或智能提示,能够提高用户搜索效率,减少输入错误。 描述中提到,这个功能是...
【标签】"仿google输入提示"这个标签直接指向了我们要讨论的核心技术,即模拟Google搜索框的自动补全行为。这涉及到关键词匹配算法、数据结构优化(如使用Trie树或哈希表)、实时响应用户输入以及与后端数据交互等多...
在提供的压缩包文件"GoogleSuggest"中,可能包含了一个关于谷歌搜索建议的示例,它展示了如何使用jQuery UI Autocomplete来模拟谷歌搜索的自动补全效果。通过分析和学习这个示例,你可以更深入地理解如何与服务器...