PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ASP.NET教程 > 正文

    asp.net模拟百度搜索框自动提示效果

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:今天分享一个模拟百度搜索框自动提示效果的功能代码,在开发经常遇到的,拿来给大家参考参考,不做的地方请指教。
    今天分享一个模拟百度搜索框自动提示效果的功能代码,在开发经常遇到的,拿来给大家参考参考,不做的地方请指教。

    AutoComplete_Get.aspx界面代码:

     
    复制代码代码如下:
    1. <%@ Page AutoEventWireup="true" CodeBehind="AutoComplete_Get.aspx.cs"
    2.     Inherits="WebApplicationTest.AutoComplete_Get" %>
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    4. <html xmlns="http://www.w3.org/1999/xhtml">
    5. <head runat="server">
    6.     <title>使用Get方式模拟自动完成的效果</title>
    7.     <style>
    8.         .highLight { background: #ccc; }
    9.     </style>
    10.     <script src="Scripts/jquery-1.4.1-vsdoc.js"></script>
    11.     <script>
    12.         var selectedItem = null;
    13.         $(function ()
    14.         {
    15.             var dv = $("#dvComplete");
    16.             $("#txtInput").keyup(function (event)
    17.             {
    18.                 var code = event.keyCode;
    19.                 if (code <= 40 && code != 8) { //event.keyCode在40(包含40)以下的,均为特殊字符.
    20.                     if (code == 38 && selectedItem != null) {
    21.                         //用户按上键
    22.                         setSelectedItem(selectedItem - 1);
    23.                         event.preventDefault();
    24.                         return;
    25.                     }
    26.                     else if (code == 40 && selectedItem != null) {
    27.                         //用户按下键
    28.                         setSelectedItem(selectedItem + 1);
    29.                         event.preventDefault();
    30.                         return;
    31.                     }
    32.                     else if (code == 27 && selectedItem != null) {
    33.                         //用户摁下Esc键.
    34.                         setSelectedItem(null);
    35.                    }                   
    36.                     else { event.preventDefault(); return; }
    37.                 }
    38.                 dv.show();
    39.                 var ff = $(this).val();
    40.                 var com = $("#dvComplete");
    41.                 $.get("HelpComplete.ashx", { "action": ff }, function (responseText, responseStatu)
    42.                 {
    43.                     var date = $.parseJSON(responseText);
    44.                     var complete = $("#dvComplete");
    45.                     complete.empty();
    46.                     if (date.length) {
    47.                         $.each(date, function (index, v)
    48.                         {
    49.                             var v = date[index].CompleteText;
    50.                             $("
    51.  
    52. ").text(v).appendTo(com).mouseover(function ()
    53.                             {
    54.                                 setSelectedItem(index);
    55.                             }).attr({ "style": "cursor:pointer; width:200px;" }).click(function (eve)
    56.                             {
    57.                                 $("#txtInput").val($(this).text());
    58.                                 eve.preventDefault();
    59.                                 dv.hide();
    60.                             });
    61.                         });
    62.                         setSelectedItem(0);
    63.                     } else {
    64.                         setSelectedItem(null);
    65.                     }
    66.                 });
    67.             }).keypress(function (eve)
    68.             {
    69.                 //摁下回车后,将选中的文本传递到文本框中.
    70.                 if (eve.keyCode == 13 && selectedItem != null) {
    71.                     //用户摁下回车
    72.                     var value = dv.find("li").eq(selectedItem).text();
    73.                     $("#txtInput").val(value);
    74.                     setSelectedItem(null);
    75.                     eve.preventDefault();
    76.                     dv.hide();
    77.                     return;
    78.                 }
    79.             });
    80.         });
    81.  
    82.         //自动匹配的推荐项样式.
    83.         function setSelectedItem(item)
    84.         {
    85.             selectedItem = item;
    86.             var dv = $("#dvComplete");
    87.             if (selectedItem == null) {
    88.                 dv.hide();
    89.                 return;
    90.             }
    91.             selectedItem = isNaN(selectedItem) ? 0 : selectedItem;
    92.             if (selectedItem < 0) {
    93.                 selectedItem = 0;
    94.             }
    95.             var maxItemIndex = dv.find("li").length;
    96.             if (selectedItem >= maxItemIndex) {
    97.                 selectedItem = maxItemIndex - 1;
    98.             }
    99.             //alert(selectedItem);
    100.             dv.find("li").removeClass("highLight").eq(selectedItem).addClass("highLight");
    101.             dv.show();
    102.         }
    103.     </script>
    104. </head>
    105. <body>
    106.     <form runat="server">
    107.     <div>
    108.         输入内容自动匹配模式:<br />
    109.         <asp:TextBox AutoComplete="off" runat="server"></asp:TextBox>
    110.     </div>
    111.     <div>
    112.     </div>
    113.     </form>
    114. </body>
    115. </html>

    HelpComplete.ashx处理程序代码:

     
    复制代码代码如下:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Web;
    5. using System.Web.Script.Serialization;
    6.  
    7. namespace WebApplicationTest
    8. {
    9.     ///
    10.     /// HelpComplete 的摘要说明
    11.     ///
    12.     public class HelpComplete : IHttpHandler
    13.     {
    14.  
    15.         public void ProcessRequest(HttpContext context)
    16.         {
    17.             context.Response.ContentType = "text/plain";
    18.             List<CompleteTest> tList = new List<CompleteTest>()
    19.             {
    20.                 #region MyRegion
    21.                 new CompleteTest(){ CompleteText="http"},
    22.                 new CompleteTest(){ CompleteText="auto"},
    23.                 new CompleteTest(){ CompleteText="morning"},
    24.                 new CompleteTest(){ CompleteText="afternoon"},
    25.                 new CompleteTest(){ CompleteText="context"},
    26.                 new CompleteTest(){ CompleteText="text"},
    27.                 new CompleteTest(){ CompleteText="plain"},
    28.                 new CompleteTest(){ CompleteText="hello"},
    29.                 new CompleteTest(){ CompleteText="word"},
    30.                 new CompleteTest(){ CompleteText="handler"},
    31.                 new CompleteTest(){ CompleteText="config"},
    32.                 new CompleteTest(){ CompleteText="response"},
    33.                 new CompleteTest(){ CompleteText="write"},
    34.                 new CompleteTest(){ CompleteText="request"},
    35.                 new CompleteTest(){ CompleteText="class"},
    36.                 new CompleteTest(){ CompleteText="public"},
    37.                 new CompleteTest(){ CompleteText="protect"},
    38.                 new CompleteTest(){ CompleteText="void"},
    39.                 new CompleteTest(){ CompleteText="summary"},
    40.                 new CompleteTest(){ CompleteText="get"},
    41.                 new CompleteTest(){ CompleteText="post"},
    42.                 new CompleteTest(){ CompleteText="ajax"},
    43.                 new CompleteTest(){ CompleteText="help"},
    44.                 new CompleteTest(){ CompleteText="dbhelp"},
    45.                 new CompleteTest(){ CompleteText="car"},
    46.                 new CompleteTest(){ CompleteText="dictionary"},
    47.                 #endregion
    48.             };
    49.             string action = context.Request["action"];
    50.             if (action != "")
    51.             {
    52.                 var v = (from c in tList
    53.                          where c.CompleteText.StartsWith(action.ToLower())
    54.                          select c).Select(=> p);
    55.                 JavaScriptSerializer jss = new JavaScriptSerializer();
    56.                 //将list集合转换成JSON字符串,并返回
    57.                 string result = jss.Serialize(v.ToList());
    58.                 context.Response.Write(result);
    59.             }
    60.         }
    61.  
    62.         public bool IsReusable
    63.         {
    64.             get
    65.             {
    66.                 return false;
    67.             }
    68.         }
    69.         class CompleteTest
    70.         {
    71.             public string CompleteText { get; set; }
    72.         }
    73.     }
    74. }

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-11-259-1.html
    相关热词搜索: 自动提示 搜索框
    上一篇:设计模式