久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
uid:83710 日志

JQuery實現類似引擎自動提示

已有 2080 次閱讀2015-6-25 16:59

   我也不知道這個東西的學名是什么,暫且依據他的功能來命名吧!直接看的樣子就可以了。
    

    思路分析:
        此功能是根據TextBox文本框中輸入的內容自動從數據庫中匹配可能的搜索項。

        1、需要Ajax異步獲取數據

        2、DIV設置absolutely定位包裹數據集合

        3、單擊內容時把Value綁定到TextBox上并且DIV隱藏

    局部步驟:

        1、新建一個項目,我以Asp.Net為例,并且需要導入、引用JQuery包(PS:如果不引用需用JavaScript實現,自行Google補腦)
        
        代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="AutoDropDownListDemo.Index" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head runat="server">
    <title>自動提示DropDownList</title>
    <script src="Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
   
        <input type="text" id="txt_SOSO" />
   
    </form>
</body>
</html>

    2、 新建一般處理程序進行后臺數據處理并異步發送回客戶端

        這與實現此功能無關,不予介紹。

    3、監聽TextBox文本值改變事件,并觸發Ajax。為了簡單Ajax端用假數據直接拼接成<ul><li></li></ul>發送回客戶端。

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Text;

        namespace AutoDropDownListDemo
        {
            /// <summary>
            /// AjaxHandleResult 的摘要說明
            /// </summary>
            public class AjaxHandleResult : IHttpHandler
            {

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

                    // 假數據、并拼接成HTML
                    StringBuilder strHTML = new StringBuilder();
                    strHTML.Append("<ul>");
                    for (int i = 0; i < 30; i++)
                    {
                        // 此處聲明的class用戶在客戶端給li添加事件
                        strHTML.Append("<li class=\"dataNumber\">我是數據:" + (i + 1) + "</li>");
                    }
                    strHTML.Append("</ul>");

                    // 拼接成的HTML數據發送給客戶端
                    context.Response.Write(strHTML);
                }

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

    以上就是服務器端回發給客戶端的數據,下面開始用JQuery實現主角了

    4、給TextBox注冊keyup事件,用于當文本值改變時觸發
        <script type="text/javascript">
            $(document).ready(function () {
                $("#text").keyup(function () { 
                
                });
            });
       </script>

    5、TextBox文本值改變后觸發Ajax從后臺獲取數據
    
         

     
    <script type="text/javascript">
        $(document).ready(function () {
            $("#txt_SOSO").keyup(function () {
                autoPrompt($("#txt_SOSO"), $("#DIV_PANLE"));
            });
        });

        /* AutoDropDownList實現 
        * event:觸發的事件源
        * panle:AutoDropDownList顯示的位置
        */
        function autoPrompt(event, panle) {
            var topY = event.position().top;    // 獲取事件源的Y坐標
            var leftX = event.position().left;  // 獲取事件源的X坐標
            var eWidth = event.width();         // 獲取事件源的寬度
            var eValue = event.val();           // 獲取事件源的Value

            /* Ajax異步獲取數據 */
            $.ajax({
                url: "AjaxHandleResult.ashx",
                type: "POST",
                data: { key: eValue },
                success: function (data) {
                    if (data != null) {
                        // 創建一個,并設置必須的CSS
                        panle.append("<div style='top:" + topY + ";left:" + leftX + ";width:" + eWidth + "px;height:200px;background-color:#FFFFF9;overflow:auto;postion:absolute;z-index:1;'>" + data + "
");
                    }
                },
                eroor: function () {
                    alert("Error:連接服務器錯誤!");
                }
            });
        }
    </script>
    <style type="text/css">
        ul li
        {
            list-style-type: none;
        }
    </style>
 
        雖然大體的樣子出來了,還是需要處理一些事件,比如說:鼠標單擊事件,貫標離開文本框DIV消失事件

    6、Remove或Hide剛才生成的

        現在就用到了剛才生成<ul><li></li></ul>中的class屬性了,根據class屬性 設置<li></li>單擊事件,當單擊時隱藏并把文本值賦值給事件源。

        <script type="text/javascript">
            $(document).ready(function () {
                $("#txt_SOSO").keyup(function () {
                    autoPrompt($("#txt_SOSO"), $("#DIV_PANLE"));
                });

                $("#txt_SOSO").blur(function () {
                    setTimeout(function () {        // 由于當單擊li時blur事件先與單擊事件觸發,導致不能觸發click事件,顧此處用setTimeout設置延時觸發
                        $("#div_auto").remove();
                    }, 200);
                });
            });

            /* AutoDropDownList實現 
            * event:觸發的事件源
            * panle:AutoDropDownList顯示的位置
            */
            function autoPrompt(event, panle) {
            var topY = event.position().top;    // 獲取事件源的Y坐標
            var leftX = event.position().left;  // 獲取事件源的X坐標
            var eWidth = event.width();         // 獲取事件源的寬度
            var eValue = event.val();           // 獲取事件源的Value

                /* Ajax異步獲取數據 */
                $.ajax({
                    url: "AjaxHandleResult.ashx",
                    type: "POST",
                    data: { key: eValue },
                    success: function (data) {
                        if (data != null) {
                            // 創建一個,并設置必須的CSS
                            panle.append("<div id='div_auto' style='top:" + topY + ";left:" + leftX + ";width:" + eWidth + "px;height:200px;background-color:#FFFFF9;overflow:auto;postion:absolute;z-index:1;'>" + data + "
");

                            $(".dataNumber").click(function () {
                                event.val($(this).html());
                                $("#div_auto").remove();
                            });
                        }
                    },
                    eroor: function () {
                        alert("Error:連接服務器錯誤!");
                    }
                });
            }
        </script>
        <style type="text/css">
            ul li
            {
                list-style-type: none;
            }
        </style>     

    注:切記setTimeout函數。

    百度網盤下載:http://pan.baidu.com/s/1c0s55QC

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 毛片黄片| 亚洲精品视频在线观看视频 | 在线观看免费高清av | 亚洲精品一区在线 | 日皮视频免费 | 一级在线视频 | 欧美在线激情 | 黄a网| 亚洲精品白浆高清久久久久久 | 精品一区二区三区在线观看 | 精品国产91| 国产精品中文在线 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 久久久www成人免费精品 | 男人的天堂中文字幕 | 宅男伊人| 在线国产一区二区 | 久久久国产一区二区三区 | 亚洲一二三区在线观看 | 国产目拍亚洲精品99久久精品 | 日韩在线一区二区三区 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 91在线精品视频 | av在线免费看网址 | 免费av一区二区三区 | 免费精品视频一区 | 国内精品视频免费观看 | 一区二区三区四区在线播放 | 国精产品一品二品国精在线观看 | 国产一区91精品张津瑜 | 日韩国产中文字幕 | 欧美日韩一二三区 | 在线免费观看一区二区 | 国产黄色大片在线免费观看 | 久久中文网 | 亚洲综合在线一区 | 国产精品视频一二三区 | 国产在线视频在线观看 | 久久欧美高清二区三区 | 久久久久成人精品亚洲国产 | 成人免费观看男女羞羞视频 |