zoukankan      html  css  js  c++  java
  • [Jquery] Jquery AutoComplete的使用方法实例

    jQuery的Autocomplete(自动完成、自动填充)插件

    jquery-autocomplete配置:

    <script type="text/javascript" src="/js/jquery.js"></script>
    <script type="text/javascript" src="/js/jquery.autocomplete.min.js"></script>
    <link rel="Stylesheet" href="/js/jquery.autocomplete.css" />

    首先是一个最简单的Autocomplete(自动完成)代码片段:

    复制代码
    1 <html xmlns="http://www.w3.org/1999/xhtml">
    2 <head runat="server">
    3     <title>AutoComplate</title>
    4     <script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
    5     <script type="text/javascript" src="/js/jquery.autocomplete.min.js"></script>
    6     <link rel="Stylesheet" href="/js/jquery.autocomplete.css" />
    7     <script type="text/javascript">
    8         $(function() {
    9             var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
    10 
    11             $('#keyword').autocomplete(data).result(function(event, data, formatted) {
    12                 alert(data);
    13             });
    14         });
    15     </script>
    16 </head>
    17 <body>
    18     <form id="form1" runat="server">
    19     <div>
    20         <input id="keyword" />
    21         <input id="getValue" value="GetValue" type="button" />
    22     </div>
    23     </form>
    24 </body>
    25 </html>
    复制代码

    result方法是jQuery Autocomplete插件里的重要方法,它在用户在选定了某个条目时触发。data参数为选中的数据。

    一个稍微复杂的例子,可以自定义提示列表:

    复制代码
    1 <html xmlns="http://www.w3.org/1999/xhtml">
    2 <head runat="server">
    3     <title>自定义提示</title>
    4     <script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
    5     <script type="text/javascript" src="/js/jquery.autocomplete.min.js"></script>
    6     <link rel="Stylesheet" href="/js/jquery.autocomplete.css" />
    7     <script type="text/javascript">
    8         var emails = [
    9             { name: "Peter Pan", to: "peter@pan.de" },
    10             { name: "Molly", to: "molly@yahoo.com" },
    11             { name: "Forneria Marconi", to: "live@japan.jp" },
    12             { name: "Master <em>Sync</em>", to: "205bw@samsung.com" },
    13             { name: "Dr. <strong>Tech</strong> de Log", to: "g15@logitech.com" },
    14             { name: "Don Corleone", to: "don@vegas.com" },
    15             { name: "Mc Chick", to: "info@donalds.org" },
    16             { name: "Donnie Darko", to: "dd@timeshift.info" },
    17             { name: "Quake The Net", to: "webmaster@quakenet.org" },
    18             { name: "Dr. Write", to: "write@writable.com" },
    19             { name: "GG Bond", to: "Bond@qq.com" },
    20             { name: "Zhuzhu Xia", to: "zhuzhu@qq.com" }
    21         ];
    22 
    23             $(function() {
    24                 $('#keyword').autocomplete(emails, {
    25                     max: 12,    //列表里的条目数
    26                     minChars: 0,    //自动完成激活之前填入的最小字符
    27                     400,     //提示的宽度,溢出隐藏
    28                     scrollHeight: 300,   //提示的高度,溢出显示滚动条
    29                     matchContains: true,    //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
    30                     autoFill: false,    //自动填充
    31                     formatItem: function(row, i, max) {
    32                         return i + '/' + max + ':"' + row.name + '"[' + row.to + ']';
    33                     },
    34                     formatMatch: function(row, i, max) {
    35                         return row.name + row.to;
    36                     },
    37                     formatResult: function(row) {
    38                         return row.to;
    39                     }
    40                 }).result(function(event, row, formatted) {
    41                     alert(row.to);
    42                 });
    43             });
    44     </script>
    45 </head>
    46 <body>
    47     <form id="form1" runat="server">
    48     <div>
    49         <input id="keyword" />
    50         <input id="getValue" value="GetValue" type="button" />
    51     </div>
    52     </form>
    53 </body>
    54 </html>
    复制代码

    formatItem、formatMatch、formatResult是自定提示信息的关键。

    formatItem作用在于可以格式化列表中的条目,比如我们加了“I”,让列表里的字显示出了斜体。

    formatMatch是配合formatItem使用,作用在于,由于使用了formatItem,所以条目中的内容有所改变,而我们要匹配的是原始的数据,所以用formatMatch做一个调整,使之匹配原始数据,

    formatResult是定义最终返回的数据,比如我们还是要返回原始数据,而不是formatItem过的数据。

    下载地址:jquery.autocomplete示例代码.rar

    ----------------------------------------------------------------------------------------------------------------

    其他:

    MVC下场景应用
     
    后台代码:
    //类对象
    public class EmailObj   {       public string name { get; set; }       public string to { get; set; }   }
    //action方法:
    public ActionResult get(string q)       {           var emails = new List<EmailObj>(){               new EmailObj(){ name = "Peter Pan", to= "peter@pan.de" },              new EmailObj(){ name= "Molly", to= "molly@yahoo.com" },              new EmailObj(){ name= "Forneria Marconi", to= "live@japan.jp" },              new EmailObj(){ name= "Master Sync", to= "205bw@samsung.com" },              new EmailObj(){ name= "Dr. Tech de Log", to= "g15@logitech.com" },              new EmailObj(){ name= "Don Corleone", to= "don@vegas.com" },              new EmailObj(){ name= "Mc Chick", to= "info@donalds.org" },              new EmailObj(){ name= "Donnie Darko", to= "dd@timeshift.info" },              new EmailObj(){ name= "Quake The Net", to= "webmaster@quakenet.org" },              new EmailObj(){ name= "Dr. Write", to= "write@writable.com" },              new EmailObj(){ name= "GG Bond", to= "Bond@qq.com" },              new EmailObj(){ name= "Zhuzhu Xia", to= "zhuzhu@qq.com" }          };           emails = emails.Where(c => c.to.ToLower().Contains(q.ToLower().TrimEnd())).ToList();           var res = JsonConvert.SerializeObject(emails);           res = res.Replace("},", "}
    ").TrimStart('[').TrimEnd(']');           return Json(res, JsonRequestBehavior.AllowGet);       }
     
    //前台js代码:
    @{     Layout = null;
    }
     
    <!DOCTYPE html>
     
    <html>
    <head>     <script src="~/Scripts/autocomplete/jquery.js"></script>     <link href="~/Scripts/autocomplete/jquery.autocomplete.css" rel="stylesheet" />     <script src="~/Scripts/autocomplete/jquery.autocomplete.js"></script>     <meta name="viewport" content="width=device-width" />     <title>Index</title>     <script type="text/javascript">         var emails = [            { name: "Peter Pan", to: "peter@pan.de" },            { name: "Molly", to: "molly@yahoo.com" },            { name: "Forneria Marconi", to: "live@japan.jp" },            { name: "Master <em>Sync</em>", to: "205bw@samsung.com" },            { name: "Dr. <strong>Tech</strong> de Log", to: "g15@logitech.com" },            { name: "Don Corleone", to: "don@vegas.com" },            { name: "Mc Chick", to: "info@donalds.org" },            { name: "Donnie Darko", to: "dd@timeshift.info" },            { name: "Quake The Net", to: "webmaster@quakenet.org" },            { name: "Dr. Write", to: "write@writable.com" },            { name: "GG Bond", to: "Bond@qq.com" },            { name: "Zhuzhu Xia", to: "zhuzhu@qq.com" }         ];         $(function () {             $('#keyword').autocomplete("/A/get", {                 dataType: "json",                 max: 12,    //列表里的条目数                 minChars: 0,    //自动完成激活之前填入的最小字符                  400,     //提示的宽度,溢出隐藏                 scrollHeight: 300,   //提示的高度,溢出显示滚动条                 matchContains: true,    //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示                 autoFill: false,    //自动填充                 cacheLength: 0,                 formatItem: function (row, i, max) {                     row = JSON.parse(row);                     return i + '/' + max + ':"' + row.name + '"[' + row.to + ']';                 },                 formatMatch: function (row, i, max) {                     row = JSON.parse(row);                     return row.name + row.to;                 },                 formatResult: function (row) {                     row = JSON.parse(row);                     return row.to;                 }             }).result(function (event, row, formatted) {                     row = JSON.parse(row); 
                     alert(row.to);             });         });     </script>
    </head>
    <body>     <div>         inputs:         <input id="keyword" />     </div>       </body>
    </html>
    下载地址:Code_AutoComplete.rar
  • 相关阅读:
    November 13th 2016 Week 47th Sunday The 1st Day
    November 12th 2016 Week 46th Saturday
    November 11th 2016 Week 46th Friday
    November 10th 2016 Week 46th Thursday
    November 9th 2016 Week 46th Wednesday
    November 8th 2016 Week 46th Tuesday
    windows 7文件共享方法
    Win7无线网络共享设置方法
    常量指针和指针常量
    如何查找局域网的外网ip
  • 原文地址:https://www.cnblogs.com/jx270/p/4516896.html
Copyright © 2011-2022 走看看