`
ww20042005
  • 浏览: 1734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

模仿google suggest 下拉菜单

阅读更多
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>

<!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">
<style type="text/css">
<!--
.style1 {color: #FF0000}
.mouseOut
{
font-size:12px;
background: #708090;
color: #FFFAFA;
}

.mouseOver
{
font-size:12px;
background: #FFFAFA;
color: #000000;
}
-->
</style>
     <script type="text/javascript" language="javascript">
        var xmlHttp;
        var completeDiv;
        var inputField;
        var nameTable;
        var nameTableBody;
        var flag=false;

        function createXMLHttpRequest() {
            if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();               
            }
        }
       
        function setflag(){
            flag = true;
        }
       
        function DisSelect()
        {
            if(flag==false)
            document.getElementById("popup").style.display="none";
        }

        function initVars() {
            inputField = document.getElementById("frmchangshang");           
            nameTable = document.getElementById("name_table");
            completeDiv = document.getElementById("popup");
            nameTableBody = document.getElementById("name_table_body");
            document.getElementById("popup").style.display="block";
        }

        function findNames() {
            initVars();
            if (inputField.value.length > 0)
    {
                createXMLHttpRequest();
                var url = "search.asp?names=" + inputField.value; 
                xmlHttp.open("GET", url, true);
                xmlHttp.onreadystatechange = callback;
                xmlHttp.send(null);
            }
    else
   {
                clearNames();
            }
        }

        function callback() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200)
                {
     try
                    {
                        var name = xmlHttp.responseXML.getElementsByTagName("name")[0].firstChild.data;
                    }
                    catch(e)
                    {
                        document.getElementById("popup").style.display="none";
                        clearNames();
                    }
                    setNames(xmlHttp.responseXML.getElementsByTagName("content"));
                }
                else if (xmlHttp.status == 204)
                {
                    clearNames();
                }
            }
        }
       
        function setNames(the_names) {           
            clearNames();
            var size = the_names.length;
            setOffsets();
            var row,cell,spans;
            for (var i = 0; i < size; i++) {
                //var nextNode = the_names[i].firstChild.data;
    var e = the_names[i];
    //取得子节点内容,重新装载为数组
    var nextNode=e.getElementsByTagName("name")[0].firstChild.data;
    //创建tr,td,span元素
                row  =document.createElement("tr");
                cell =document.createElement("td");
    //spans=document.createElement("span");
    //设置cell属性
                cell.onmouseout = function() {this.className='mouseOver'; flag=false;};
                cell.onmouseover = function() {this.className='mouseOut'; flag=true;};
                cell.setAttribute("bgcolor","#FFFAFA");
                cell.setAttribute("border","0");
                //cell.setAttribute("onmouseover","setflag()");
                cell.onclick = function() { populateName(this); };
    //将nextNode添加到td
    var txtName = document.createTextNode(nextNode);
    cell.appendChild(txtName);
    //装载隐藏数据到span元素
    row.appendChild(cell);
                nameTableBody.appendChild(row);
            }
        }

        function setOffsets() {
            var end = inputField.offsetWidth;
            var left = calculateOffsetLeft(inputField);
            var top = calculateOffsetTop(inputField) + inputField.offsetHeight;

            completeDiv.style.border = "black 1px solid";
            completeDiv.style.left = left + "px";
            completeDiv.style.top = top + "px";
            nameTable.style.width="400px";
        }
       
        function calculateOffsetLeft(field) {
          return calculateOffset(field, "offsetLeft");
        }

        function calculateOffsetTop(field) {
          return calculateOffset(field, "offsetTop");
        }

        function calculateOffset(field, attr) {
          var offset = 0;
          while(field) {
            offset += field[attr];
            field = field.offsetParent;
          }
          return offset;
        }

        function populateName(cell) {
    //填充数据到web页面,cell---->td对象
            inputField.value = cell.firstChild.nodeValue;
            clearNames();
        }
        //清除列表数组
        function clearNames() {
            var ind = nameTableBody.childNodes.length;
            for (var i = ind - 1; i >= 0 ; i--) {
                 nameTableBody.removeChild(nameTableBody.childNodes[i]);
            }
            completeDiv.style.border = "none";
        }
</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>

<body>
<input name="frmchangshang" class="InputText" id="frmchangshang"  style="width:250px;" onBlur="DisSelect();" onKeyUp="findNames();" size="50" maxlength="100">
                    &nbsp;<span class="style1">提示:输入关键字,程序自动从库中匹配您要找的记录,如果不存在自行填写
         </span>
                    <div style="position:absolute;top:0;left:0;" id="popup">
                        <table id="name_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0">           
                            <tbody id="name_table_body"></tbody>
                        </table>
                  </div>
</body>
</html>

2.后台search.asp异步查询数据页面
把sql语句和要显示的字段改为自己的数据库相对应格式就可以了。
<!--#include virtual="conn.asp" -->
<%
keyword=request.QueryString("names")
sql="select lgid,lgmc from lg where lgmc like '%"&keyword&"%' order by lgid desc"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
Response.ContentType="text/xml"   
response.Write "<?xml version=""1.0"" encoding=""GB2312"" ?>"
response.Write "<response>"
do while not rs.eof
response.Write "<content>"
response.Write "<name>"&rs("lgmc")&"</name>"
'response.Write "<userid>"&rs("userid")&"</userid>"
'response.Write "<startime>"&rs("startime")&"</startime>"
'response.Write "<endtime>"&rs("endtime")&"</endtime>"
response.Write "</content>"
rs.movenext
loop
response.Write "</response>"
rs.close
set rs=nothing
%>



分享到:
评论

相关推荐

    ASP模仿google suggest风格实现下拉菜单效果

    在本文中,我们将探讨如何使用ASP来模仿Google Suggest风格的下拉菜单效果。Google Suggest是一种自动补全功能,当用户在搜索框中输入文本时,它会提供与输入内容匹配的相关建议。这种功能提高了用户体验,减少了...

    google suggest 下拉菜单实现代码(asp.net版本)

    【谷歌建议下拉菜单实现(ASP.NET版本)】 在网页开发中,谷歌建议下拉菜单是一种常见的用户输入辅助功能,它能根据用户在输入框中输入的字符动态提供相关建议,提升用户体验。以下是一个基于ASP.NET实现的谷歌建议...

    google下拉菜单

    谷歌下拉菜单,也被称为Google Suggest或自动补全,是谷歌搜索引擎中的一项功能,它在用户输入查询词时提供实时的建议搜索项。这项功能不仅提高了搜索效率,还为用户提供了一种更快速、准确地找到所需信息的方式。在...

    飞飞模仿google(suggest)下拉提示框v1.6.rar

    【标签】"飞飞模仿google(suggest)下拉提示框v1.6.rar"是文件的唯一标签,这表明这个压缩包中的所有内容都是关于这个特定的项目,即一个模仿谷歌下拉提示功能的实现。 【压缩包子文件的文件名称列表】包含两个文件...

    飞飞模仿google(suggest)下拉提示框sggestV1.5

    此小程序是模仿Google(sgguest)输入提示框所编写 亦可用于用户注册邮箱时的提示 此程序使用方便简单、易用灵活 且不限Asp、php、net 更新说明: 1.支持xhtml 2.兼容IE6,IE7,FF 3.支持input显示与value分离 4.支持...

    Google Suggest ;-) 基于js的动态下拉菜单

    【Google Suggest 动态下拉菜单的工作原理】 Google Suggest 是一个基于JavaScript实现的动态下拉菜单功能,它在用户输入关键词时提供实时的搜索建议。这一功能的核心原理是利用JavaScript在当前网页中创建一个...

    google suggest 的实现

    ### Google Suggest 实现原理与关键技术 #### 一、引言 Google Suggest 是一项能够为用户提供即时搜索建议的功能,其工作方式是在用户输入搜索词的过程中动态提供可能的搜索建议,从而帮助用户更快地找到所需的信息...

    google suggest 实现 ajax应用

    【标题】:Google Suggest 实现 AJAX 应用 在当今的Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于创建交互性更强、用户体验更佳的网页应用。本主题主要聚焦于如何使用ASP.NET框架实现一个...

    模仿IE下拉过滤功能

    在IT领域,模仿IE下拉过滤功能是一种常见的用户体验优化技术,尤其在开发Web应用程序时,这种功能能够极大地提升用户输入的效率和体验。IE浏览器的下拉过滤功能,实际上是自动完成(AutoComplete)或自动填充...

    ajax仿google suggest 数据库版

    **Ajax仿Google Suggest数据库版**是基于Ajax技术实现的一种搜索建议功能,它模拟了Google搜索引擎在用户输入关键字时实时显示搜索建议的效果。这个项目主要使用Java作为后端语言,结合Ajax技术,为前端用户提供流畅...

    google suggest(支持中文)

    谷歌建议(Google Suggest)是一项在线搜索功能,它在用户输入查询时实时提供可能的搜索建议。这个项目基于jQuery库实现,使得用户在输入框中输入中文时也能得到相关的搜索建议。jQuery是一个广泛使用的JavaScript库...

    ajax自动完成 搜索提示(类似google) suggest

    该脚本功能很强大,类似google的自动完成。 使用了cache 功能,当敲入的字符数可以在cache中查到时,将不会向服务器发送请求。减轻服务器压力 使用空格匹配,一个空格字符相当于1个或多个字符(串),可以自己写简单...

    仿Google Suggest提示效果

    【标题】"仿Google Suggest提示效果"是一个关于在网页中实现类似Google搜索框自动提示功能的技术分享。这种功能在现代网页应用中非常常见,它能够提升用户体验,帮助用户更快地找到他们想要输入的关键词。 【描述】...

    vs2010仿google suggest功能案例

    利用Visual Studio 2010和SQLserver2008基于net framework 4开发的类似google suggest自动完成功能代码。 可以使用上下键进行选择回车键选定,也可以使用鼠标点击选定。 默认是查询的系统数据库的一张表,使用时请...

    ExtJs Google Suggest 动态查询效果

    在本示例中,"ExtJs Google Suggest 动态查询效果" 是一个利用ExtJs实现的功能,它模仿了谷歌搜索框的自动建议功能。当你在搜索框中输入文字时,下拉列表会实时更新,显示与输入内容匹配的建议项。 首先,我们要...

    仿GoogleSuggest自动补全的功能

    本教程将详细讲解如何实现一个仿GoogleSuggest的自动补全功能,旨在提供一个绝对实用的解决方案。 首先,理解GoogleSuggest的工作原理至关重要。它基于用户在搜索框中输入的字符,实时从服务器端获取并展示可能的...

    bootstrap框架下带搜索功能的下拉树插件

    这种控件不仅具备普通下拉菜单的功能,还能够以树形结构展示数据,方便用户在大量选项中进行筛选和选择。本文将详细讲解如何在Bootstrap环境下实现一个带有搜索功能的下拉树插件,并基于`bootstrap-select`和`...

    类似google suggest

    【标题】:“类似Google Suggest”的Ajax实现 在IT领域,Google Suggest是谷歌搜索引擎提供的一项功能,它根据用户在搜索框中输入的关键词实时显示相关的搜索建议。这个功能极大地提高了搜索效率,优化了用户体验。...

Global site tag (gtag.js) - Google Analytics