注意事项:要使用jQuery首先要把它的包引用进来( <script type="text/javascript" language="javascript" src="js/jquery-1.2.3.js"></script>)

本功能实现的原理简述:通过输入框的keyup事件,在后台把输入框当前的数据传入后台进行处理(以json格式传输),本例的后台处理文件是一个ashx文件。后台得到json数据后从数据库里取数据,然后回传到前台;前台显示的是一个类似百度和谷歌的下拉框,本例是这样实现的,把从后台传过来的每一个记录,通过jQuery动态生产一个<li></li>,然后把这些li放到一个div里取,再给这些li设置CSS,然后根据CSS就可以选择记录。

请看代码:

前台:

js文件:

<script language="javascript" type="text/javascript">
        
        $(function(){
        $("#keyword").bind("keyup",triggerAjax).bind("blur",input_blur);
        $("body").click(li_click); //很奇怪,在dvResult低边框以下click时不会触发li_click事件,这个问题还需改进
        });
       
        function triggerAjax()
        {   
             $.get("AutoComplete.ashx",SendingData(),callback);
        }
       
        function input_blur()
        {
            if($(".MouseOverLi").size()>0)//判断是否选择了项
            {
                $("#keyword").val($(".MouseOverLi").html());//选了某一项,则把它的值赋给输入框
                $("#dvResult").fadeOut("3000"); // 隐藏div
            }
        }
       
        function li_click()
        {
            //$("#keyword").val($(this).html());
            $("#dvResult").fadeOut("3000"); // 隐藏div
        }
       
        // 回调函数,处理从服务器端返回的数据
        function callback(data)
        {
          $("#dvResult").slideDown("3000");
           if(data!="")
           {   
                $("#dvResult").html(""); //清空前一次返回的数据
                var keys = data.split(";"); //把返回的字符串(以;分割)转变成数组
                var len = keys.length;
                for(count = 0;count<len-1;count++)
                {
                    $("#dvResult").append("<div class='item'>"+keys[count]+"</div>");
                }
               
               
                $("#dvResult").addClass("HasDataDiv");
                $(".item").mouseover(function(){$(this).addClass("MouseOverLi");});
                $(".item").mouseout(function(){$(this).removeClass("MouseOverLi");});
               
                //选中值
                $(".item").click(function(){
                    $("#keyword").val($(".MouseOverLi").html());//选了某一项,则把它的值赋给输入框
                    $("#dvResult").fadeOut("2000"); // 隐藏div
                });
            }
            else
            {
                $("#dvResult").html($("#keyword").val()+" 不存在!");
            }
        }
       
        // 向服务器端发送要处理的数据
        function SendingData()
        {
            var keyword,table,field,_json;
           
            _keyword = $("#keyword").val(); //检索用到的关键字
            _table = "Users"; //数据库名称
            _field = "userName"; //要检索的字段
           
            _json = {keyword:_keyword,table:_table,field:_field};
           
            return _json;
           
        }
    </script>

HTML:

<body  style="text-align: center">
    <form id="form1" runat="server">
    <table style="padding-top: 5px" cellpadding="0" cellspacing="0">
        <tr>
            <td style="height:5px"></td>
        </tr>
        <tr valign="top">
            <td>
                <input  id="keyword" name="keyword" type="text" />
            </td>
            <td>
                <input id="Button1" type="button" value="搜索" />
            </td>
        </tr>
         <tr>
            <td colspan="2">
                <div id="dvResult" style="text-align:left; height:100px; overflow:auto;">
                   
                </div>
            </td>
        </tr>
    </table>
    </form>
</body>

/*******************后台处理逻辑***************************/

public class AutoComplete : IHttpHandler
{
    public AutoComplete()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";

if (context.Request.Params["keyword"] != null && context.Request.Params["table"] != null && context.Request.Params["field"] != null)
        {

string keywordTemp=context.Request.Params["keyword"].ToString();
            string tableTemp=context.Request.Params["table"].ToString();
            string fieldTemp=context.Request.Params["field"].ToString();

string returnStr = "";
            returnStr = AutoCompleteGetResult.GetResult(keywordTemp, tableTemp, fieldTemp);
            context.Response.Clear();
            context.Response.Write(returnStr);
            context.Response.End();
        }
        else
        {
            context.Response.Clear();
            context.Response.Write("自动提示无法启动");
            context.Response.End();
        }
    }

public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

public class AutoCompleteGetResult
{
    public AutoCompleteGetResult()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    public static string GetResult(string keyword, string tableName, string field)
    {
       
        string[] key = keyword.Split(' ');
        StringBuilder sql = new StringBuilder();
       
        sql.Append("SELECT " + field + " FROM " + tableName + " where 1=1");

for (int i = 0; i < key.Length; i++)
        {
            sql.Append(" and " + field + " like '%" + key[i] + "%'");
        }

DataTable dt = DBClass.ExecuteDataSet(sql.ToString()).Tables[0];
       
        string returnStr = "";
        try
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                returnStr += Convert.ToString(dt.Rows[i][field]) + ";";
            }
           
        }
        catch { }

return returnStr;
    }
}

转载于:https://www.cnblogs.com/laiss/archive/2010/09/25/1834715.html

用jQuery的ajax的功能实现输入自动提示的功能相关推荐

  1. java 输入提示_Java实现输入自动提示与补全功能

    一. 场景与目标 在使用 IDE 开发软件时, IDE 会提供一种"智能提示", 根据所输入的字符列出可能的词组: 在日常Web开发中,根据用户输入进行自动提示和补全,也能很好地改 ...

  2. Ajax实现百度搜索框自动提示功能

    Ajax实现百度搜索框自动提示功能 当你在搜索框内写入关键字时下拉框会匹配和你输入的关键字相匹配的信息 文章目录 Ajax实现百度搜索框自动提示功能 一.实现效果 二.代码实现 1.前端页面 2.后端 ...

  3. 仿新浪邮件输入自动提示jQuery插件

    一个邮箱提示控件,会自动提示你已经预设的邮箱! /** /** * 邮件输入自动提示插件 * author Newton * $('id').mailTip({ * mails: [], 需要提示的邮 ...

  4. [转]jquery的ajax交付时“加载中”提示的处理方法

    本文转自:http://www.educity.cn/wenda/77121.html jquery的ajax提交时"加载中"提示的处理方法     方法1:使用ajaxStart ...

  5. Input 如何取消输入自动提示

    Input 如何取消输入自动提示 input 用为日期插件的启动元素时,点击 Input 可能会被浏览器的输入提示挡住,如: 只需要把 input 设置 autocomplete="off& ...

  6. 使用 jQuery 的 Autocomplete 插件实现input输入提示功能 input 输入模糊提示demo

    如何使用 HTML5 实现 文本框输入内容后带有模糊匹配的功能.这其实很简单,而且jQuery也为我们提供了相应的插件 Autocomplete.js.这不是一项新技术,百度一搜有很多相关的文章.在这 ...

  7. 输入自动提示——《超级处理器》应用

    我们来看一段动画: 动画演示 输入部分字段,自动提示完整的内容,这样的功能是不是很方便呢?尤其是对于复杂的内容,需要多次输入的重复内容,使用这样的功能,可以大大提高工作效率. 我们来看下,具体是怎么实 ...

  8. android输入自动补全,Android用户输入自动提示控件AutoCompleteTextView使用方法

    一.简介 1.AutoCompleteTextView的作用 2.AutoCompleteTextView的类结构图 也就是拥有EditText的各种功能 3.AutoCompleteTextView ...

  9. 基于腾讯地图的输入自动提示与补全功能

    当用户在地图的搜索框输入地点的关键词时,此时搜索框下拉列表将会有相关词供用户选择,即根据输入文本片段即显示相关的匹配信息,节省了用户的输入成本. 一.功能介绍 关键词输入提示接口可以用于获取输入关键字 ...

最新文章

  1. Android进阶知识:事件分发与滑动冲突(一)
  2. Wix学习整理(2)——HelloWorld安装添加UI
  3. 高级指引——自定义节点
  4. H3C S3100交换机配置VLAN和远程管理
  5. [js] js中的undefined和 ReferenceError: xxx is not defined 有什么区别?
  6. ajax success function_Django:AJAX(二)
  7. 苹果iPhone发布13周年:累计销量近20亿部
  8. 并发编程应用场景_linux网络编程之select函数的并发限制和poll函数应用举例
  9. warning: control reaches end of non-void function:错误解决
  10. C++11 override 和 final 关键字
  11. 洛谷P2057 [SHOI2007]善意的投票 题解
  12. 越南无线网dns服务器设置,越南dns 服务器地址
  13. groupwise_SSL证书安装指南 - Groupwise 6 Netware Email Server
  14. Docker网桥模式ping不通宿主机
  15. 使用mysql.help_topic生成序列
  16. 键盘之争:QWERTY还是Dvorak
  17. pandas中的窗口对象(窗口函数)
  18. U盘产生快捷方式病毒
  19. 企业上云业务系统上云是怎么回事儿?
  20. 定了!考研人务必抓紧!2023考研全程资料免费分享微信大群!全网开启!

热门文章

  1. java判断线段是否相交函数_计算几何-判断线段是否相交
  2. ios sdk 穿山甲_GitHub - ArthurKnight/flutter_ad_pangolin_plugin: iOS flutter 穿山甲插件
  3. js 创建file对象_JS 之创建对象
  4. php _runmagicquotes,PHP关于magic quotes的理解
  5. Python接口自动化之yaml配置文件
  6. Postman系列之Collections集合管理
  7. 激活函数详解/为什么要用激活函数
  8. IOHK与World Mobile合作以在坦桑尼亚建立新移动网络
  9. 以太坊上DeFi协议总锁仓量首次突破350亿美元
  10. 一条案例:如何选择合适的第三方数据源